解题思路:
1.设元素下标为i,j ,矩阵阶数为Length,和为sum;

2.主对角线元素下标满足:i==j;

3.副对角线元素下标满足:i+j-1==Length;

4.输入一个元素Mxtrix,判断下标是否满足主副对角线元素下标条件,满足,sum加上这个数;

参考代码:

#include <stdio.h>

int main()
{
    int sum = 0, Length, Matrix;
    scanf( "%d", &Length );     //阶数

    for ( int i = 1; i <= Length; i++ )    //行
        for ( int j = 1; j <= Length; j++ )    //列
        {
            scanf( "%d", &Matrix );
            if ( (i == j) || (i + j - 1) == Length )   //判断
                sum += Matrix;          //求和
        }
    printf( "%d", sum );   //输出
    return(0);
}

别忘点赞哦-.-

点赞(22)
 

0.0分

62 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 24 条评论

KK 2年前 回复TA
@以诚 循环部分条件应该改成if(i==j || i+j=n-1),你这样写n为奇数时正副对角线有个交点(两个条件都满足),sum重复加多了一个
乐业 2年前 回复TA
@信可兴 数组大小不能用变量定义,前面有输入也不行
以诚 3年前 回复TA
include<stdio.h>
#include<string.h>
#include<math.h>
int main(){
       int sum=0,n,a[10][10],i,j;
       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++)
       {
           for(j=0;j<n;j++)
       {
           if(i==j)
           {
               sum+=a[i][j];
           }
           if(i+j==n-1)
           {
               sum+=a[i][j];
           }
       }

       }
       printf("%d",sum);
}
这样为啥错了啊
信可兴 3年前 回复TA
这样写为什么错啊
#include<stdio.h>
int main(){
	int a,b,c,d,sum=0;
	scanf("%d",&a);
	int n[a][a];
	for(b=0;b<a;b++){
		for(c=0;c<a;c++){
			scanf("%d",&n[b][c]);
		}
	}
	for(b=0;b<a;b++){
		c=0;
		sum+=n[b][c];
		c++;
		d=a-1;
		sum+=n[b][d];
		d--;
	}
	if(a%2!=0)
	sum-=n[(a-1)/2][(a-1)/2];
	printf("%d",sum);
}
正男 3年前 回复TA
@正男 抱歉,是我输入错了,导致结果错了
正男 3年前 回复TA
您好,当矩阵大小为5*5 时,输入数据为1至25 时,输出答案为121 ,正确答案是117 , 是否是程序还存在某些疏漏呢?
渐入佳境. 3年前 回复TA
为什么运行错误啊(非法的内存访问,数组越界。。。)
#include<stdio.h>
int main(){
	int n,a[10][10],sum=0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			scanf("%d",&a[i][j]);
			if(i==j||i+j-1==n){
			   sum+=a[i][j];	
			}
			
		}
	}
	printf("%d",sum);
	return 0;
}
kktry 3年前 回复TA
@斩魔的双双u 瞎写
kktry 3年前 回复TA
@MusicGeek 要用malloc函数分配
软件二班谭豪 3年前 回复TA
厉害!