张楚涵


私信TA

用户名:tzu200341134

访问量:796

签 名:

等  级
排  名 6794
经  验 1320
参赛次数 11
文章发表 2
年  龄 0
在职情况 学生
学  校 泰州学院
专  业

  自我简介:

TA的其他文章

解题思路:

初看题目,求矩阵的两对角线上的元素之和,当时的第一想法就是遍历,将两条对角线分别算一下,加进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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

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;
为什么我的不可以
2022-11-21 20:30:31
  • «
  • 1
  • »