#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[31][31], i, j, m, n, p = 0;
while(p == 0)
{
system("clear");
printf("請輸入不大於30的奇數:");
scanf("%d",&m);
if(m != 0 && m <= 30 && m % 2 != 0)
break;
}
for(i = 1; i <= m; i++)
for(j = 1; j <= m; j++)
a[i][j] = 0;
j = i / 2 + 1;
a[1][j] = 1;
for(n = 2; n <= m * m; n++)
{
i = i - 1;
j = j + 1;
if(i < 1 && j > m)
{i = i + 2;
j = j - 1;}
else
{
if(i < 1) i = m;
if(j > m) j = 1;
}
if(a[i][j] == 0)
a[i][j] = n;
else
{
i = i + 2;
j = j - 1;
a[i][j] = n;
}
}
system("clear");
printf("這個數的魔方陣是:\n");
for(i = 1; i <= m; i+
COLOR: #0000cc">+)
{
for(j = 1; j <= m: j++)
printf("%4d",a[i][j]);
printf("\n");
}
return 0;
}
此程序在linux下的編譯是
gcc -Wall -g filename.c -o filename
編譯器警告選項 -Wal
它的作用是讓GCC編譯過程中產生更多的警告信息
-g選項的作用是在用GDB調試時用的,所以說如果要進行調試的話這個選項必須加上,否則是不能進行調試的.
-o選項是產生一個重新命名的可執行文件(例如magiccube.c -o magic,這樣就文產生一個magic的可執行文件,不加的話產生的是一個名為a.out的文件)