1樓:聽不清啊
這個是另改的:
#include
int main()
int a[16][16]=,i,j,i1,j1,k,n;
printf("enter is 1~15:");
scanf("%d",&n);
i=0,j=(n-1)/2;
a[i][j]=1;
for(k=2;k<=n*n;k++)
else i++;
a[i][j]=k;
for(i=0;iprintf("\n");
for(j=0;jprintf("%5d",a[i][j]);
printf("\n");
return 0;
再一種方案:
#include
int main()
int a[16][16]=,i,j,k,n;
printf("enter is 1~15:");
scanf("%d",&n);
i=0,j=(n-1)/2;
a[i][j]=1;
for(k=2;k<=n*n;k++)
else
if(i<0)i=i+n;
if(j>=n)j=j-n;
if(a[i][j]>0)
a[i][j]=k;
for(i=0;iprintf("\n");
for(j=0;jprintf("%5d",a[i][j]);
return 0;
2樓:匿名使用者
#include
int main()
,i,j,k,n;
printf("enter is 1~15:");//n要為奇數scanf("%d",&n);
i=0,j=(n-1)/2;
a[i][j]=1;
for(k=2;k<=n*n;k++)
if(j>=n)
if(a[i][j]==0)
//中間程式有點問題
else
}for(i=0;i
c語言輸出魔方陣程式解釋
3樓:匿名使用者
首先魔方陣是乙個奇數行列式方陣,它的一行,一列,對角線的和都相等。
建立魔方陣的第一步是確定1的位置,它是第一行的中間列,之後要確定其他位置的值,
問題1:if((i<1)&&(j>n))時,說明你確定的位置已經超出了魔方陣,所以要用i=i+2;j=j-1;把它拉回的魔方陣內,
問題2:判斷第i行地j列的值是否等於0(即是否被填充),如果沒填充,就填k,如果填充,再尋找下乙個位置,
問題3:因為你的主函式main()前面的返回值為int,所以要提供返回值,那不是return=0,而是return 0;就是返回0,也可以返回1,這沒關係的,如果不想要也行,那得把main()前面的int 改為void .
c語言做的魔方陣
4樓:
我奇怪你的語法怎麼可能沒錯,int str[n][n];肯定是編譯不通的,陣列定義時長度必須是常量。給你乙個我自己寫的魔方陣演算法吧,算作參考
#include
#define n 100
void sort(int *p,int num)sort(p,n);
for(i=0;i 5樓:聽不清啊 下面是乙個列印奇數階魔方陣的程式: #include int main() ;while(!(n%2)) c語言輸出魔方陣,所謂魔方陣是指這樣的方陣,她的每一行,每一列和對角線之和相 6樓:戲雨南 #include #define max 15 int a[max][max]; int n; void magic(); int main() while(1); magic(); printf("the is %d*%d magic",n,n); printf("..............\n"); for(i=0;i }void magic() a[i][j]=k; k++;}} 演算法:只能輸入奇數!! 3*3正確的應該如下,有規律的: # # # # ## 6 1 8 ## 7 5 3 ## 2 9 4 ## # # # # 1.首先把第乙個數1,放在第一排正中;//估計也是要奇數的原因2.怎樣來確定下乙個元素2呢? 先找到1的左上方,如果超出了這個矩陣,就把他放在對應的行或列下面,沒有超出就放在左上方就ok了,比如,4,5,6; 3,如果在該元素的左上方已經有元素了,就把下個元素放在自己的下面就ok了;比如3的左上方有1了,就把4放在3下面。 4,重複 上面的2,3,;就行了。 我以前寫的,希望可以幫你! 如何求解偶數階魔方陣 用c語言 編寫的** 7樓:匿名使用者 本人親自寫的程式,望採納,如下: #include int a[200][200]=; /*200為我自己定義的,可根據需要修改*/ void jsz(int n) /*奇數魔方陣演算法*/ else a[p][k]=i;}} void ou4bz(int n) /*偶數4的倍數魔方陣演算法*/ if(n%2==0) else jsz(n); for(i=0;i c語言 三階魔方陣 8樓:匿名使用者 我只想說你的演算法錯了,你還是去查一查魔方陣的演算法吧;下面是n階奇數魔方陣的程式,你好好看看吧: # include void main() int array[16][16]; int i, j, k, m, n; /* 變數初始化 */ m = 1; while(m == 1) printf("請輸入n(0scanf("%d", &n); /* 判斷n是否是大於0小於等於15的奇數 */if((n!=0) && (n<=15) && (n%2!=0))printf("矩陣階數是 %d\n", n); m = 0; /* 陣列賦初值為0 */ for(i=1; i<=n; i++) for(j=1; j<=n; j++) array[i][j] = 0;/* 建立魔方陣 */j = n/2 + 1; array[1][j] = 1; for(k=2; k<=n*n; k++)i = i - 1; j = j + 1; if((i<1) && (j>n)) i = i + 2; j = j - 1; else if(i < 1) i = n; if(j > n) j = 1; if(array[i][j] == 0) array[i][j] = k; else i = i + 2; j = j - 1; array[i][j] = k; }/* 輸出魔方陣 */ for(i=1; i<=n; i++) for(j=1; j<=n; j++) printf("%5d", array[i][j]); printf("\n"); }輸入3所得到的三階魔方陣為: 9樓:丶殺手丶 三階魔方陣。用三維陣列才行。你這一維怎麼輸出啊? c語言程式設計,輸出魔方陣 10樓:小夏在深圳 源**如下: #include #define n 5 int main() int a[n][n]=, i, j, k, t, x, y; i=0; /*自然數1的行標*/ j=n/2; /*自然數1的列標*/ t=n-1; /*最後一行、最後一列的下標*/for(k=1; k<=n*n; k++)a[i][j]=k; x=i; y=j; if(i == 0) i=t; else i=i-1; if(j != t) j=j+1; else j=0; if(a[i][j]!=0) i=x+1; j=y; printf("生成的5-魔方陣為:"); for(i=0; iprintf("\n"); for(j=0; jprintf("%3d", a[i][j]); printf("\n"); return 0; 擴充套件資料1、由於乙個整型數要占用兩個記憶體,因此,如果魔方陣中要存放的數有max個,則分配記憶體時要分配2*max個單元,從而有malloc(max+max)。在malloc()函式中使用max+max而不是2*max是考慮了程式執行的效能。 2、記憶體是一維線性的,因此在訪問陣列元素時,要將雙下標轉換為單個索引編號。在程式中直接定義了指標變數來指向陣列空間,即使用malloc()函式分配的記憶體。 11樓:凌許撒問芙 你好,首先你要搞清楚魔方陣的排列規律,我看了下你的程式,只是針對奇數來排列的,而魔方陣的奇數排列規律就是: (1)將1放在第一行中間一列; (2)從2開始直到n×n止各數依次按下列規則存放: 按45°方向向右上走,每乙個數存放的行比前乙個數的行數減1,列數加1; (3)如果行列範圍超出矩陣範圍,則迴繞。 例如1在第1行,則2應放在最下一行,列數同樣加1; 又如某個數在第n列,則下乙個數應放在第一列,行數同樣減1; (4)如果按上面規則確定的位置上已有數,或上乙個數是第1行第n列時,則把下乙個數放在上乙個數的下面。 知道了排列規律,就好辦了,程式注釋如下: #include void main() else //如果不是,又有以下情況 if(a[i][j]==0) //如果按上面規則確定的位置上沒有數,那麼就放在該位置 a[i][j]=k; else //如果按上面規則確定的位置上已有數,那麼也是將下乙個數放到上乙個數的下面 }for(i=1;i<=n;i++) printf("\n\n");} 12樓:匿名使用者 #include int main() ,i,j,n; i=1; printf("請輸入乙個數"); scanf("%d",&n);//輸入魔方陣的維度n j=n/2+1; // j是維度的一半加1. a[i][j]=1; //確定第一排的中間乙個數為1 for(int k=2;k<=n*n;k++)//已經確定1的位置了,再迴圈確定2~n*n的位置 if(j>n) //如果只有橫排超過最右,橫排挪到左邊第二行。 if(a[i][j]==0) a[i][j]=k; //如果這個位置還沒有賦值,那麼賦值為k。 else //已經賦值過了。那麼豎排往下挪兩位,橫排往左移一位,再賦值為k。 } for(i=1;i<=n;i++) //迴圈輸出位置。 }魔方陣有一定畫法,先取一點,然後往左上、右下、右上、左下,任意選乙個方向填數字就可以了。 這個是其中乙個畫法: 1)將1填入第一行中間; 2)將每個數填在前乙個數的右上方。 3)若該位置超出最上行,則改填在最下行的對應位置; 4)若該位置超出最右列,則該填在最左列的對應行位置; 5)若某元素填在第一行最右列,下乙個數填在該數同列的下一行; 6)若某數已填好,但其右上角已填了其他資料,則下乙個數填在該數同列的下一行位置。 其實看樓主一般拿來幹嘛的啦 我有一台touch 也用過安卓系統 其實不需要一定買touch3 那個已經停產了 而且3代與4代 效能和有很大差距 不論是螢幕還是什麼 建議買4代 絕對不後悔 不論是遊戲還是 資金不夠建議去 趕集網買2手的touch4代 1200元運氣好的話可以買到 32g的哦 3代建議... 你好 還是那個填充牆問題,我這找不到那個圖示,也沒有標註,只說要我去建築圖找,是不是牆體都是啊?答 答您這題時,我也經常碰到過在建築施工圖上,而不在建築結構基礎圖上。記得您前一問是全框。哪麼所有的牆體 裡 外牆都屬於框架填充牆 是牆體都是,都按建築圖上的要求去做。理解準確。實際他指的元寶形基礎上大下... 姜小憂 首先他這種行為違反了公司的企業規定,如果公司發現了要起訴他的話他要賠償這9000元,並賠償公司的名譽損失,失業是必然的,其次如果公司不追究,反倒是業主追究起來,也有兩種情況1,私了,賠償一堆金額 2,報案,按照國家商業企業工作人員違規條款施行罰款,因為數額較小,一般情況下是不會被判的,最多拘...touch3 32G跟酷比魔方U9GT那個實用?
你好還是那個填充牆問題,我這找不到那個圖示,也沒有標註,只說要我去建築圖找,是不是牆體都是啊
你好,我那個朋友具體是這樣的,你好我是剛剛那個男朋友談了兩年的,追問好像發不出去,所以只好這樣啦 5