当前位置:首页 » 编程语言 » 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;
}