标题:求MxM矩阵对角线上元素之和,这个代码不能实现,求大神指教!
只看楼主
袁地的Jack
Rank: 2
等 级:论坛游民
帖 子:17
专家分:12
注 册:2012-3-8
结帖率:100%
已结贴  问题点数:10 回复次数:8 
求MxM矩阵对角线上元素之和,这个代码不能实现,求大神指教!
程序代码:
#include<stdio.h>
void main()
{
    int a[20][20],m,i=0,j=0,sum=0;
    printf("Please input m: ");
    scanf("%d",&m);
    if(m<2 || m>20)
        printf("input data error!\n");
    else
    {
        printf("Please input array:\n");
        for(i=0;i<m;i++)
        {
            for(j=0;j<m;j++)
            {
                scanf("%d",a);
            }
        }
        for(i=0;i<3;i++)
        {
            sum+=a[i][i];
        }
        printf("%d\n",sum);
    }
}
搜索更多相关主题的帖子: 矩阵 对角线 元素 
2012-12-17 16:14
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
得分:0 
只求其中一条还是两条?

My life is brilliant
2012-12-17 16:43
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
得分:5 
#include<stdio.h>
int main()
{
    int a[20][20],m,i,j,sum=0;
    printf("Please input m: ");
    scanf("%d",&m);
    if(m<2 || m>20)
        printf("input data error!\n");
    else
    {
        printf("Please input array:\n");
        for(i=0;i<m;i++)
        {
            for(j=0;j<m;j++)
            {
                scanf("%d",&a[i][j]);
            }
        }
        for(i=0;i<m;i++)
        {
            sum+=a[i][i];
        }
        printf("%d\n",sum);
    }
    return 0;
}

小小战士,战士中的战斗机!
2012-12-17 16:53
梁朝斌
Rank: 4
等 级:业余侠客
帖 子:192
专家分:288
注 册:2012-10-21
得分:4 
#include<stdio.h>
 void main()
 {
     int a[20][20],m,i,j,sum=0;
     printf("Please input m: ");
     scanf("%d",&m);
     
         printf("Please input array:\n");
         for(i=0;i<m;i++)
         {
             for(j=0;j<m;j++)
             {
                 printf("a[%d][%d]=",i,j);
                 scanf("%d",&a[i][j]);
             }
         }
         printf("输入的数组是:\n");
         for(i=0;i<m;i++)
         {
             for(j=0;j<m;j++)
             {
                 printf("a[%d][%d]=%d ",i,j,a[i][j]);
                 if(i==j)
                     sum+=a[i][j];
             }
             printf("\n");
         }
         printf("sum=%d\n",sum);

 }

菜鸟也疯狂
2012-12-17 16:58
梁朝斌
Rank: 4
等 级:业余侠客
帖 子:192
专家分:288
注 册:2012-10-21
得分:0 
你里面有几个错误,对着看一下吧

菜鸟也疯狂
2012-12-17 16:58
shmilyflf
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:356
专家分:1008
注 册:2012-12-9
得分:1 
回复 3楼 小小战士
正解。楼主也太不仔细了。这都是可以避免的,粗心犯的错啊。貌似这种错误调试一下就会知道错在哪了,如果是新手还是学会调试比较好。如果以后再学可能就会比较无奈。
2012-12-17 20:55
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
得分:0 
scanf("%d",&a[i][j]);
这个错误属于编译时错误,就是程序在编译时报错,不能运行,看看下面的报错信息就可以解决了

for(i=0;i<m;i++)
这个属于逻辑性错误,编译连接运行输出都没有问题,但就是得不到正确的结果,这就要靠程序员自己调试和检查了

小小战士,战士中的战斗机!
2012-12-17 21:11
袁地的Jack
Rank: 2
等 级:论坛游民
帖 子:17
专家分:12
注 册:2012-3-8
得分:0 
回复 2楼 lz1091914999
题目要求两条,先做出一条就好了。主要是输入数组的存储地址搞不定。
2012-12-18 13:55
袁地的Jack
Rank: 2
等 级:论坛游民
帖 子:17
专家分:12
注 册:2012-3-8
得分:0 
回复 7楼 小小战士
如果 scanf("%d",a); 输入数组数据,那数据的存储也应该是从a[0][0]开始的吧?
至于scanf("%d",&a[i][j]); 这个写法,还真不知道。谢谢指教!
后面那个 i<3 是我用m=3调试的时候加的,过失性失误,罪过罪过!
2012-12-18 14:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-391648-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.200734 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved