C语言编程,打印魔阵(它的每一行,每列的对角线之和相等),代码??
2个回答
展开全部
#include <stdio.h>
#define n 5
void main()
{
int a[n][n];
int i,j,t,s=0,flag=1;
printf("Please enter array:\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++) /*输入矩阵*/
scanf("%d",&a[i][j]);
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%4d",a[i][j]); /*打印出矩阵*/
printf("\n");
}
for(s=i=0;i<n;i++)
s=s+a[i][i]; /*主对角线上元素之和*/
for(i=0;i<n;i++)
{
for(t=j=0;j<n;j++)
t=t+a[i][j]; /*判断每行元素之和是否相等*/
if(s!=t)
{
flag=0;
break;
}
}
for(j=0;j<n;j++)
{
for(t=i=0;i<n;i++)
t=t+a[i][j]; /*判断每列元素之和是否相等*/
if(s!=t)
{
flag=0;
break;
}
}
for(t=i=0;i<n;i++)
t=t+a[i][n-1-i]; /*副对角线元素之和*/
if(s!=t)
flag=0;
if (flag==1)
printf("是魔方矩阵\n");
else
printf("不是魔方矩阵\n");
}
#define n 5
void main()
{
int a[n][n];
int i,j,t,s=0,flag=1;
printf("Please enter array:\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++) /*输入矩阵*/
scanf("%d",&a[i][j]);
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%4d",a[i][j]); /*打印出矩阵*/
printf("\n");
}
for(s=i=0;i<n;i++)
s=s+a[i][i]; /*主对角线上元素之和*/
for(i=0;i<n;i++)
{
for(t=j=0;j<n;j++)
t=t+a[i][j]; /*判断每行元素之和是否相等*/
if(s!=t)
{
flag=0;
break;
}
}
for(j=0;j<n;j++)
{
for(t=i=0;i<n;i++)
t=t+a[i][j]; /*判断每列元素之和是否相等*/
if(s!=t)
{
flag=0;
break;
}
}
for(t=i=0;i<n;i++)
t=t+a[i][n-1-i]; /*副对角线元素之和*/
if(s!=t)
flag=0;
if (flag==1)
printf("是魔方矩阵\n");
else
printf("不是魔方矩阵\n");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-12-28
展开全部
#include<stdio.h>
#include<conio.h>
#define M 256
#define N 256
void main(void)
{
int a[M][N],i,j,k,n;
printf("请输入幻方阶数(奇数阶):");
scanf("%d",&n);
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("%d\t",a[i][j]);
printf("\n");
}
getch();
}
#include<conio.h>
#define M 256
#define N 256
void main(void)
{
int a[M][N],i,j,k,n;
printf("请输入幻方阶数(奇数阶):");
scanf("%d",&n);
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("%d\t",a[i][j]);
printf("\n");
}
getch();
}
更多追问追答
追问
这个代码我试过了。没有结果!!!
追答
麻烦你试过再下结论,这是我改过后作为作业交过的,VC6运行,一会儿上图
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询