为了账号安全,请及时绑定邮箱和手机立即绑定

请教同学们和老师们

我总觉得这么做有点麻烦,假如数组维数越大,这个方法肯定不行。

正在回答

1 回答

//题目给出的参考答案(只在行列都为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;



2 回复 有任何疑惑可以回复我~
#1

你二爷爷的三哥哥 提问者

尽管没有完全理解,但是解决了我的矛盾~~~
2017-02-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请教同学们和老师们

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信