你二爷爷的三哥哥
2017-01-16 10:55
我总觉得这么做有点麻烦,假如数组维数越大,这个方法肯定不行。
//题目给出的参考答案(只在行列都为3的矩阵下适用)
#include <stdio.h>
int main()
{
int arr[3][3] = {
{1,2,3},
{4,5,6},
{7,8,9}};
int i,j;
int sum=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++){
if(i%2==0 && j%2==0)
sum=sum+arr[i][j];
}
}
sum=sum+arr[1][1];
printf("对角线元素之和是:%d\n",sum);
return 0;
}偶数组:
0 1 2 3
1 11 12 13
2 21 22 23
3 31 32 33
奇数组
0 1 2 3 4
1 11 12 13 14
2 21 22 23 24
3 31 32 33 34
4 41 42 43 44
#include <stdio.h>
#define n 4 //在此随意修改数组的行列
int main(void)
{
int i, j, sum;
int a[n][n];
//构建数组,手动输入
printf("Please input a array\n");
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
scanf("%d", &a[i][j]);
}
}
//打印构建数组
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
printf("%3d", a[i][j]);
}
printf("\n");
}
//求二维数组对角线上元素和
sum = 0;
for(i=0; i<n; i++) {
for(j=0; j<n; j++) {
if((i==j) || (i+j==n-1)) {
sum += a[i][j];
}
}
}
printf("主对角线和次对角线之和是:%d\n", sum);
return 0;
}注意:矩阵数组对角线有两条,将编程问题转化成数学问题求解;
主对角线上的元素是行列相等(i=j);副对角线上的元素数组行列下表相加为数组长度减1;
C语言入门
928197 学习 · 21544 问题
相似问题