一个C语言题目 做法看不懂 求大神解释一下

检验并打印幻方矩阵。(4分) 题目内容: 幻方矩阵是指该矩阵中每一行、每一列、每一对角线上的元素之和都是相等的。从键盘输入一个5×5的矩阵并将其存入一个二维整型数组中,检验其是否为幻方矩阵,并将其按指定格式显示到屏幕上。 输入格式: "%d" 输出格... 检验并打印幻方矩阵。(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; } 为什么要令第一个为零 其他的加起来也为零?没看懂啊? 展开

第1个回答  2019-06-09
这里使用一个6X6数组来装1个5X5的矩阵,每一行的第一个数据即a[i][0]用来装这一行所有数据的和,每一列的第一个数据即a[0][i]用来装这一列数据的和。
把每行和每列的第一个数据初始化化为0是为了利用叠加法求每行(列)元素的和。

for
(j=1;j<=5;j++)
a[i][0]+=a[i][j];
这是把a[i][0]=a[i][1]+a[i][2]+a[i][3]+a[i][4]+a[i][5]

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网