解题思路:
初看题目,求矩阵的两对角线上的元素之和,当时的第一想法就是遍历,将两条对角线分别算一下,加进s中。
但后来细想加仔细审题,发现一些端倪,如果按照上面的想法,其实还是有一些问题。如果行列数是奇数的话,那我们就加了两次中间的数。所以最后我们需要减掉一次。
注意事项:
参考代码:
#include <stdio.h> int main() { int a[10][10],i,j,n,m,s=0; //建立一个10*10的整型数组 scanf("%d",&n); //输入矩阵的行数 for(i=0;i<n;i++) //遍历矩阵,输入元素 for(j=0;j<n;j++) scanf("%d",&a[i][j]); for(i=0;i<n;i++) //计算左对角线和右对角线之和 s=s+a[i][i]+a[i][n-1-i]; if(n%2==1) //判断n的奇偶,若为奇,需减去一个加了两次的中心元素 s-=a[n/2][n/2]; //这里的n/2和(n+1)/2其实是一样的,因为这里的n定义的是整型 printf("%d",s); //输出s return 0; }
如有裨益,吾之幸也。祝大家编程进步。
0.0分
1 人评分
int i,j,sum1 = 0,sum2 = 0,s,k; scanf("%d",&k); int a[k][k]; for(i=0; i<k; i++){ for(j=0; j<k; j++){ scanf("%d",&a[i][j]); } } for(i=0; i<k; i++){ for(j=0; j<k; j++){ if(i == j) sum1 += a[i][j]; if(i + j == k-1) sum2 += a[i][j]; } } printf("%d %d\n",sum1,sum2); if(k%2==0){ s=sum1+sum2; } else{ s=sum1+sum2-a[(k+1)/2-1][(k+1)/2-1]; } printf("%d",s); return 0; 为什么我的不可以
母牛的故事 (C语言代码)浏览:435 |
C语言程序设计教程(第三版)课后习题6.4 (C语言代码)浏览:738 |
上车人数 (C语言代码)浏览:778 |
C语言训练-排序问题<1> (C语言代码)浏览:599 |
用筛法求之N内的素数。 (C语言代码)浏览:1234 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:694 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:611 |
sizeof的大作用 (C语言代码)浏览:1449 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:679 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:324 |