鱼C论坛

 找回密码
 立即注册
查看: 1778|回复: 4

C语言 求助

[复制链接]
发表于 2015-11-6 12:25:22 | 显示全部楼层 |阅读模式
15鱼币
题目描述

求矩阵的两对角线上的元素之和
输入

矩阵的行数N
和一个N*N的整数矩阵a[N][N](N<=10)
输出

所输矩阵的两对角线上的元素之和
样例输入

3
1 2 3
4 5 6
7 8 9

样例输出

25


我的代码
# include <stdio.h>
main ()
{
        int a[10][10],b,c,d,e,s=0;
        scanf("%d",&b);
        for(c=0;c<b;c++)    //输入数组
        {
                for(d=0;d<b;d++)
                {
                   scanf("%d",&a[c][d]);
                }
        }        
   for(c=0,d=0;c<b;c++)    //求左上到右下斜线 和。
        {
                d=d+a[c][c];
        }
        c=0;e=b-1;
        while(c<d && e>-1)   //求右上到左下斜线 和
        {
                s=s+a[c][e];
                c++;e--;
        }
        if(b%2 == 0)    //和加并减去重复值
        printf("%d\n",d+s);
        else
        printf("%d\n",d+s-a[(b-1)/2][(b-1)/2]);
        
}

我发现,和的结果是正数,那么答案正确,要是和结果是负数,答案就会错误。
比如 1 -9,结果就不是-9.为什么会这样,我不知道哪里错了,求指点。

最佳答案

查看完整内容

1.这个命名看的太累人了啊~~~容易乱 2.或许你就是看变量名乱的 3. 这个while里 c
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-6 12:25:23 | 显示全部楼层
1.这个命名看的太累人了啊~~~容易乱
2.或许你就是看变量名乱的
3.  这个while里   c<b 不是c<d
while(c<d && e>-1)   //求右上到左下斜线 和
        {
                s=s+a[c][e];
                c++;e--;
        }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-6 14:15:13 | 显示全部楼层
#include <stdio.h>

int main()
{
    int n,i,j,sum=0;
    scanf("%d",&n);                         //输入矩阵行数n

    int a[n][n];
    for(i=0;i< n;i++)                         //初始化矩阵
    {
        for(j=0;j<n;j++)
            scanf("%d",&a[i][j]);
    }

    for(i=0,j=0;i<n;i++,j++)              //计算左上至右下对角的和
        sum=sum+a[i][j];

    for(i=0,j=n-1;i<n;i++,j--)            //计算右上至左下对角的和
        sum=sum+a[i][j];

    if(n%2!=0)                                  //如果矩阵行数是奇数,减去重复累加的元素值
        sum=sum-a[n/2][n/2];

    printf("%d",sum);                     //输出最终的和
    return 0;
}

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
独一无② + 5 + 5 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-11-6 15:50:38 | 显示全部楼层
dwer 发表于 2015-11-6 14:23
1.这个命名看的太累人了啊~~~容易乱
2.或许你就是看变量名乱的
3.  这个while里   c

谢谢,的确是这里错了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-11-6 15:52:26 | 显示全部楼层

谢谢了,不过我想知道 自己的代码哪里错了,现在解决了,还是要谢谢你。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 11:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表