魔方問題 C語言版

2021-06-27 07:23:26 字數 1374 閱讀 6476

乙個魔方(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 物件導向 想要去英倫美帝學圖靈諾伊曼 怎麼編怎麼編離散數學是關鍵 怎麼編...