一个C语言题目 做法看不懂 求大神解释一下
检验并打印幻方矩阵。(4分)题目内容:幻方矩阵是指该矩阵中每一行、每一列、每一对角线上的元素之和都是相等的。从键盘输入一个5×5的矩阵并将其存入一个二维整型数组中,检验其...
检验并打印幻方矩阵。(4分)
题目内容:
幻方矩阵是指该矩阵中每一行、每一列、每一对角线上的元素之和都是相等的。从键盘输入一个5×5的矩阵并将其存入一个二维整型数组中,检验其是否为幻方矩阵,并将其按指定格式显示到屏幕上。
输入格式: "%d"
输出格式:
如果是幻方矩阵,输出提示信息: "It is a magic square!\n"
矩阵元素的输出: "% 4d"(换行使用"\n")
如果不是幻方矩阵,输出提示信息: "It is not a magic square!\n"
输入样例1:
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
(输人样例中“_”代表空格)
输出样例1:
It is a magic square!
**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
(输出样例中“*”代表空格)
输入样例2:
1_0_1_6_1
3_1_1_1_1
1_1_1_1_2
1_1_1_1_1
9_1_7_1_1
(输人样例中“_”代表空格)
输出样例2:
It is not a magic square!
注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!
(输人样例中“_”代表空格,输出样例中“*”代表空格)
时间限制:500ms内存限制:32000kb
#include "stdio.h"
int main()
{
int a[6][6];
int i,j;
for (i=1;i<=5;i++)
for (j=1;j<=5;j++)
scanf("%d",&a[i][j]);
for (i=1;i<=5;i++)
{
a[i][0]=0;
for (j=1;j<=5;j++)
a[i][0]+=a[i][j];
if (a[i][0]!=a[1][0]) {printf("It is not a magic square!\n");return 0;}
}
for (i=1;i<=5;i++)
{
a[0][i]=0;
for (j=1;j<=5;j++)
a[0][i]+=a[j][i];
if (a[0][i]!=a[0][1]) {printf("It is not a magic square!\n");return 0;}
}
if (a[1][0]!=a[0][1]) {printf("It is not a magic square!\n");return 0;}
a[0][0]=0;
for (i=1;i<=5;i++) a[0][0]+=a[i][i];
if (a[0][0]!=a[1][0]) {printf("It is not a magic square!\n");return 0;}
a[0][0]=0;
for (i=1;i<=5;i++) a[0][0]+=a[i][6-i];
if (a[0][0]!=a[1][0]) {printf("It is not a magic square!\n");return 0;}
printf("It is a magic square!\n");
for (i=1;i<=5;i++)
{
for (j=1;j<=5;j++)
printf("% 4d",a[i][j]);
printf("\n");
}
return 0;
}
为什么要令第一个为零 其他的加起来也为零?没看懂啊? 展开
题目内容:
幻方矩阵是指该矩阵中每一行、每一列、每一对角线上的元素之和都是相等的。从键盘输入一个5×5的矩阵并将其存入一个二维整型数组中,检验其是否为幻方矩阵,并将其按指定格式显示到屏幕上。
输入格式: "%d"
输出格式:
如果是幻方矩阵,输出提示信息: "It is a magic square!\n"
矩阵元素的输出: "% 4d"(换行使用"\n")
如果不是幻方矩阵,输出提示信息: "It is not a magic square!\n"
输入样例1:
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
(输人样例中“_”代表空格)
输出样例1:
It is a magic square!
**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
(输出样例中“*”代表空格)
输入样例2:
1_0_1_6_1
3_1_1_1_1
1_1_1_1_2
1_1_1_1_1
9_1_7_1_1
(输人样例中“_”代表空格)
输出样例2:
It is not a magic square!
注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!
(输人样例中“_”代表空格,输出样例中“*”代表空格)
时间限制:500ms内存限制:32000kb
#include "stdio.h"
int main()
{
int a[6][6];
int i,j;
for (i=1;i<=5;i++)
for (j=1;j<=5;j++)
scanf("%d",&a[i][j]);
for (i=1;i<=5;i++)
{
a[i][0]=0;
for (j=1;j<=5;j++)
a[i][0]+=a[i][j];
if (a[i][0]!=a[1][0]) {printf("It is not a magic square!\n");return 0;}
}
for (i=1;i<=5;i++)
{
a[0][i]=0;
for (j=1;j<=5;j++)
a[0][i]+=a[j][i];
if (a[0][i]!=a[0][1]) {printf("It is not a magic square!\n");return 0;}
}
if (a[1][0]!=a[0][1]) {printf("It is not a magic square!\n");return 0;}
a[0][0]=0;
for (i=1;i<=5;i++) a[0][0]+=a[i][i];
if (a[0][0]!=a[1][0]) {printf("It is not a magic square!\n");return 0;}
a[0][0]=0;
for (i=1;i<=5;i++) a[0][0]+=a[i][6-i];
if (a[0][0]!=a[1][0]) {printf("It is not a magic square!\n");return 0;}
printf("It is a magic square!\n");
for (i=1;i<=5;i++)
{
for (j=1;j<=5;j++)
printf("% 4d",a[i][j]);
printf("\n");
}
return 0;
}
为什么要令第一个为零 其他的加起来也为零?没看懂啊? 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |