當前位置:首頁 » 編程語言 » c語言編寫魔方程序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言編寫魔方程序

發布時間: 2022-03-08 15:17:48

Ⅰ 如何用C編寫一個解魔方的程序求高手來!

估計這種智能化的沒有幾個人可以編寫出來。這可是一個非常大的工程。
不過我可以告訴你編寫的步驟:

1.先拼好一個面的十字架,注意與臨面的一致性,然後拼好一個面。
2.再拼好這個面的四個臨面,用的方法是:五逆四順或者五順四逆。
3.再拼最後一個面的十字架,方法為:三逆三順。
4.拼好最後一個面為同色,方法:左下右上。
5.最後是完全拼好,口訣為:逆,逆,順,逆,逆;順順,順,順,順;順 順,逆,順,順;順順,逆,逆。

Ⅱ 用c語言編寫n階魔方陣.謝謝了!!!

下面這個程序原本是從網路里找到的,不過發現網路裡面那個程序原來有誤,修改後終於可以了,給你,希望有幫助!!!

#include <stdio.h>
#define N 16 //N可修改

int main()
{
int a[N][N]={0},i,j,k,p,m,n;
p=1;
while(p==1)
{
printf("Enter n(1~%d): ",N-1);
scanf("%d",&n);
if((n!=0)&&(n<N)&&(n%2!=0))
p=0;
}
i=n+1;
j=n/2+1;
a[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(a[i][j]==0) a[i][j]=k;
else
{
i=i+2;
j=j-1;
a[i][j]=k;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%4d",a[i][j]);
printf("\n");
}

return 0;
}

Ⅲ 魔方陣c語言程序

下面運行通過,只不過不知道是否符合你的格式,代碼如下: #include

Ⅳ 怎樣用C語言編寫魔方程序

說白了就是遞歸。你可以去看漢諾塔和華容道的遞歸方式。這兩個我寫過,其實魔方的差不多,就是在三維結構體組的銜接上需要沸點腦子。說錯了是結構體的構造上需要琢磨下

Ⅳ 能不能用C語言編寫一個魔方程序謝謝

這個很難,演算法很復雜,
最關鍵的是,
1. 輸入太多了,幾乎需要將6個面的每一格的顏色都輸入,否則魔方的狀態不唯一
2. 編程的人需要有玩魔方的基礎,唉,反正我不會玩魔方~~~

Ⅵ C語言做的魔方陣

我奇怪你的語法怎麼可能沒錯,int str[n][n];肯定是編譯不通的,數組定義時長度必須是常量。給你一個我自己寫的魔方陣演算法吧,算作參考
#include<stdio.h>
#define N 100
void sort(int *p,int num)
{
int i;
int row,col;
row=0;
i=0;
col=num/2;
while(i<num*num)
{
if(*(p+row*num+col)!=0)
{row+=2;col--;}
*(p+row*num+col)=i+1;
if((row==0)&&(col==num-1))
{
row++;
}
else
{
if(row==0)
row=num-1;
else
row--;
if(col==num-1)
col=0;
else
col++;
}
i++;
}
}
void main()
{
int i,flag,a[N]={0};
int *p,n;
flag=1;
p=a;
while(flag==1)
{
printf("enter n(1~10)\n");
scanf("%d",&n);
if((n>0)&&(n<11)&&(n%2!=0)) flag=0;
}
sort(p,n);
for(i=0;i<n*n;i++)
{
printf("%5d",a[i]);
if((i+1)%n==0) printf("\n");
}
}

Ⅶ C語言編程,輸出魔方陣

程序代碼:

#include&lt;stdio.h&gt;

#define N 16

int main()

{

int a[N][N]={0},i,j,k,p,n;

p=1;

while(p==1)

{

printf("Enter n(1~%d):",N);

scanf("%d",&n);

if((n!=0)&&(n&lt;N)&&(n%2!=0))

p=0;

}

i=n+1;

j=n/2+1;

a[1][j]=1;

for(k=2;k&lt;=n*n;k++)

{

i=i-1;

j=j+1;

if((i&lt;1)&&(j&gt;n))

{

i=i+2;

j=j-1;

}

else

{

if(i&lt;1)i=n;

if(j&gt;n)j=1;

}

if(a&lt;i&gt;[j]==0)a&lt;i&gt;[j]=k;

else

{

i=i+2;

j=j-1;

a&lt;i&gt;[j]=k;

}

}

for(i=1;i&lt;=n;i++)

{

for(j=1;j&lt;=n;j++)

printf("%4d",a&lt;i&gt;[j]);

printf(" ");

}

return 0;

}

(7)c語言編寫魔方程序擴展閱讀:

1.第一行中間一列的值為1。

所以用j=n/2+1確定1的列數,得出a[1][j]=1。

2.每一個數存放的行比前一個數的行數減1,列數加1。

行數用i=i-1確定,列數用j=j+1確定。

3.如果一個數行數為第一行,則下一個數行數為最後一行。

4.如果一個列行數為最後一列,則下一個數列數為第一列。

5.如果按上面的規則確定的位置上已有數,或上一個數是第一行最後一列,則把下一個數放在上一個數的下面。

Ⅷ 用c語言程序編寫的1到n的平方的魔方陣運行的結果是什麼

#include"stdio.h"
main()
{
inta[20][20],i,j,k,p=1,m,n;
while(p==1)
{
printf("Entern(n=1--19):");
scanf("%d",&n);
if(n>0&&n<=19&&n%2!=0)p=0;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=0;
j=n/2+1;
a[1][j]=1;
for(k=2;k<=n*n;k++)
{
i-=1;
j+=1;
if(i<1&&j>n)
{
i+=2;
j-=1;
}
else
{
if(i<1)i=n;
if(j>n)j=1;
}
if(a[i][j]==0)a[i][j]=k;
else
{
i+=2;
j-=1;
a[i][j]=k;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)printf("%4d",a[i][j]);
printf(" ");
}
}



我舉個例子:3介魔方陣
8 1 6
3 5 7
4 9 2
就是每一行,每一列和對角線這和都相等

Ⅸ 求解!!!如何在C語言中編寫一個魔方矩陣

#include <stdio.h>
int main()
{ int a[15][15],i,j,k,p,n;
p=1;
while(p==1)
{printf("enter n(n=1--15):");
scanf("%d",&n);
if ((n!=0) && (n<=15) && (n%2!=0))
p=0;
}
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
a[i][j]=0;
j=n/2+1;
a[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 (a[i][j]==0)
a[i][j]=k;
else
{i=i+2;
j=j-1;
a[i][j]=k;
}
}
for (i=1;i<=n;i++)
{for (j=1;j<=n;j++)
printf("%5d",a[i][j]);
printf("\n");
}
return 0;
}

Ⅹ 請編程達人用c語言編寫一個程序輸出魔方陣

#include <stdio.h>
#define N 16 //這里可以修改N的值
int main()
{
int a[N][N],i,j,k,p,m,n;
p=1;

while(p==1) /*要求階數為1~15的商數*/
{ printf("Enter n(n=1~15):"); //可以輸入小於等於N-1的整數
scanf("%d",&n);
if((n!=0)&&(n<=N-1)&&(n%2!=0)) p=0;
}

for(i=1;i<=n;i++) /*初始化*/
for(j=1;j<=n;j++) a[i][j]=0;

j=n/2+1; /*建立魔方陣*/
a[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(a[i][j]==0) a[i][j]=k;
else
{ i=i+2;
j=j-1;
a[i][j]=k;
}
}

for(i=1;i<=n;i++) /*輸出魔方陣*/
{ for(j=1;j<=n;j++)
printf("%4d",a[i][j]);
printf("\n");
}
return 0;
}