乙個魔方(magic square)是由乙個1到n^2的整數構成的n*n矩陣,其中每行、每列以及兩個對角線上的數字之和相等。如下面是n=5的魔方,行、列、對角線的和分別是75:
15 8 1 24 17
16 14 7 5 23
22 20 13 6 4
3 21 19 12 10
9 2 25 18 11
當n為奇數時,h.coxeter 給出了魔方生成的簡單法則:
在開始前,先搞清楚三個位置:乙個是當前位置(當前已經填入數字的位置,用i, j代表行,列),乙個是預計位置(估計下乙個數會在**,用row, col代表行,列),另乙個是下乙個位置(下乙個數的確切位置,用i, j代表行,列)。因為預計位置不一定就是下乙個位置,所以這兩個位置有區別的。步驟如下:
1. 先在第一行中間的位置填入1,然後再找下乙個數字(此時是2)的預計位置(估計下乙個數會在**);
2. 如果當前位置在第一行上,就讓預計位置的行在最後一行(i=max),否則就在上一行(i-1);
3. 如果當前位置在第一列上,就讓預計位置的列在最後一列(j=max),否則就在左一列(j-1);
4. 如果預計位置還沒填入數字,下乙個位置就是預計位置;
5. 如果預計的位置已填入數字,下乙個位置就是當前
#include #include #define max_size 15 // 魔方行、列不超過15
int main(void)
if (!(size % 2)) // 如果輸入的是偶數
for (i = 0; i < size; i++)
for (j = 0; j < size; j++)
square[i][j] = 0; // 初始化輸入的魔方數
square[0][(size-1) / 2] = 1; // 在第一行的中間位置放1
i = 0; // 當前位置的行
j = (size-1) / 2; // 當前位置的列
for (count = 2; count <= size * size; count++)
square[i][j] = count; // 填入數字
} printf("magic square of size %d: \n", size);
for (i = 0; i < size; i++)
printf("\n");
}
問題 S 除法問題(C語言版)
題目描述 輸入正整數n,遇到檔案末尾結束。按從大到小順序輸出所有形如abcde fghij n的表示式,其中a到j恰好為數字0到9的乙個排列 可以有前導0 無解輸出 no answer n在2到79之間。輸入 一行輸入乙個整數n。輸出 形如abcde fghij n的表示式。樣例輸入 62樣例輸出 ...
C語言版掃雷
用c語言實現掃雷,首先應該有基本的思路,建立兩個相同大小的陣列,乙個用於布雷 初始化為全0,布雷時將雷置為1 另乙個給使用者展示 初始化為星號,使用者輸入座標後統計周圍雷的分布並列印雷的個數 由於需要統計每個座標周圍類的個數,所以將陣列建立大一圈,以方便統計。若輸了,列印出雷陣告訴玩家雷的分布。具體...
雙截棍 C語言版
雙截棍c 語言版 軟考室的菸味瀰漫坐滿了程式設計師 室裡面的監考官係分已三年 出上午試題的老師練cpu 耍微控制器 硬體功夫最擅長還會邏輯門三極體 他們學生我習慣從小就耳濡目染 什麼軟體跟網路我都耍的有摸有樣 什麼語言最喜歡c 物件導向 想要去英倫美帝學圖靈諾伊曼 怎麼編怎麼編離散數學是關鍵 怎麼編...