int main()
{
int a[5][5],i,j,sum,N
printf("请输入一个5*5的矩阵:\n")
for(i=0i<5i++){
for(j=0j<5j++){
scanf("%d",&a[i][j])
}
}
N=5*(5*5+1)/2
for(i=0i<5i++){
sum=0//每求一行sum重新置为0
for(j=0j<5j++){
sum=sum+a[i][j]
}
if(sum==N)//比较每一行之和是否等于N
continue//如果是跳过这次循环继续下一次循环
else{
printf("该矩阵不是魔方矩阵!\n")system("pause")return 0
}
}
for(i=0i<5i++){
sum=0//每求一列sum重新置为0
for(j=0j<5j++){
sum=sum+a[j][i]//比较每一列之和是否等于N
}
if(sum==N)
continue
else{
printf("该矩阵不是魔方矩阵!\n")system("pause")return 0
}
}
sum=0//计算对角线求和前重置为0
for(i=0i<5i++){
for(j=0j<5j++){
if(i==j)
sum=sum+a[i][j]//计算从左到右对角线的和
}
}
if(sum!=N){
printf("该矩阵不是魔方矩阵!\n")system("pause")return 0
}
sum=0//计算对角线求和前重置为0
for(i=0i<5i++){
j=4-i
sum=sum+a[i][j]
}
if(sum!=N){
printf("该矩阵不是魔方矩阵!\n")system("pause")return 0
}
else
printf("该矩阵是魔方矩阵!\n")
system("pause")
return 0
}
#include<stdio.h>#include<stdlib.h>
#include<time.h>
#define N 5
void main()
{
int i,j
int x[N][N]={{17,24,1,8,15},{23,5,7,14,16},
{4,6,13,20,22},{10,12,19,21,3},{11,18,25,2,9}}
int rowsum[N],colsum[N],diagsum1,diagsum2
int flag=1
for(i=0i<Ni++)
{
rowsum[i]=0
for(j=0j<Nj++)
{
rowsum[i]=rowsum[i]+x[i][j]
}
}
for(j=0j<Nj++)
{
colsum[j]=0
for(i=0i<Ni++)
{
colsum[j]=colsum[j]+x[i][j]
}
}
diagsum1=0
for(j=0j<Nj++)
{
diagsum1=diagsum1=x[j][j]
}
diagsum2=0
for(j=0j<Nj++)
{
diagsum2=diagsum2=x[j][N-1-j]
}
if(diagsum1!=diagsum2)
{
flag=0
}
else
{
for(i=0i<Ni++)
{
if((rowsum[i]!=diagsum1)||(colsum[i]!=diagsum1))
flag=0
}
}
if(flag)
{
printf("It is magic square!\n")
for(i=0i<Ni++)
{
for(j=0j<Nj++)
{
printf("%4d",x[i][j])
}
printf("\n")
}
}
else
{
printf("It is not magic square!\n")
}
}
看一下
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)