标签:
题目内容:
幻方矩阵是指该矩阵中每一行、每一列、每一对角线上的元素之和都是相等的。从键盘输入一个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!
注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!
(输人样例中“_”代表空格,输出样例中“*”代表空格)
1 #include<stdio.h> 2 3 const int MAX = 5; 4 int Fun(int a[][MAX]); 5 int main() 6 { 7 int a[MAX][MAX] ; 8 for (int i = 0; i < MAX; i++) 9 for (int j = 0; j < MAX; j++) 10 scanf("%d ", &a[i][j]); 11 12 13 if (Fun(a) == 1) 14 { 15 printf("It is a magic square!\n"); 16 for (int i = 0; i<MAX; i++) 17 { 18 for (int j = 0; j < MAX; j++) 19 printf("%4d", a[i][j]); 20 printf("\n"); 21 } 22 } 23 else 24 printf("It is not a magic square!\n"); 25 26 return 0; 27 } 28 int Fun(int a[][MAX]) 29 { 30 int s1, s2, sum; 31 32 sum = 0; 33 for (int i = 0; i<MAX; i++) 34 for (int j = 0; j<MAX; j++) 35 sum += a[i][j]; 36 37 sum /= MAX; 38 39 for (int i = 0; i<MAX; i++) 40 { 41 s1 = s2 = 0; 42 for (int j = 0; j<MAX; j++)//判断每一行每一列 43 { 44 s1 += a[i][j]; 45 s2 += a[j][i]; 46 } 47 if (s1 != sum || s2 != sum) 48 { 49 return 0; 50 } 51 } 52 s1 = s2 = 0; 53 for (int i = 0; i<MAX; i++)//判断每一撇:主对角线 54 { 55 s1 += a[i][i]; 56 s2 += a[i][MAX - i - 1]; 57 } 58 if (s1 != sum || s2 != sum) 59 return 0; 60 return 1; 61 }
标签:
原文地址:http://www.cnblogs.com/entrepre/p/5498251.html