| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 510 人关注过本帖
标题:[求助]关于二维数组应用的问题!
只看楼主 加入收藏
小说贝斯
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-8-4
收藏
 问题点数:0 回复次数:5 
[求助]关于二维数组应用的问题!
最近看了一个题型,但是在一些细节上出现了问题,希望在这能得到帮助!
题目:读入下表中数值到数组,分别求各行、各列、以及表中所有数之和。
12 4 6
8 23 3
15 7 9
2 5 17
我的程序是这样的:
#include<stdio.h>
main()
{int x[5][4],i,j;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
scanf("%d",&x[i][j]);
for(i=0;i<5;i++)
x[i][3]=0;
for(j=0;j<4;j++)
x[4][j]=0;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
{ x[i][3]+=x[i][j];
x[4][j]+=x[i][j];
x[4][3]+=x[i][j];
}
for(i=0;i<5;i++)
{for(j=0;j<4;j++)
printf("%5d\t",x[i][j]);
printf("\n");
}
}
标准答案给的是:
#include<stdio.h>
main()
{int x[5][4],i,j;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
scanf("%d",&x[i][j]);
for(i=0;i<3;i++)
x[4][i]=0;
for(j=0;j<5;j++)
x[j][3]=0;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
{ x[i][3]+=x[i][j];
x[4][j]+=x[i][j];
x[4][3]+=x[i][j];
}
for(i=0;i<5;i++)
{for(j=0;j<4;j++)
printf("%5d\t",x[i][j]);
printf("\n");
}
}
但是两个程序的运行结果一样的。所以想问一下,我的写法是不是对的?自己觉得和标准答案相比,标准答案更好!
搜索更多相关主题的帖子: 应用 
2007-08-07 11:30
小说贝斯
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-8-4
收藏
得分:0 
希望高手能够详细分析一下这两个程序!谢谢了!
关键是:
for(i=0;i<5;i++)
x[i][3]=0;
for(j=0;j<4;j++)
x[4][j]=0;

for(i=0;i<3;i++)
x[4][i]=0;
for(j=0;j<5;j++)
x[j][3]=0;
的区别!!!

Standing on Shoulders of Giants
2007-08-07 11:38
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
收藏
得分:0 
下面的程序对x[4][3]初始化一次,而你的对x[4][3]初始化两次!!所以下面的更优!!

要练习算法就来http:///!!有挑战哦!!
2007-08-07 11:49
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 

你连这个区别也看不出来???

数组里第5行第4列那个元素,你用了两次赋值为0,标准答案一次。

没什么希奇,效果都一样。


Fight  to win  or  die...
2007-08-07 11:59
knight_hb
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-8-7
收藏
得分:0 

main()
{
int a[4][3];
int sumr[4],sumc[3];
int i,j,sum=0;

for(i=0;i<4;i++)
sumr[i]=0;

for(i=0;i<3;i++)
sumc[i]=0;

for(i=0;i<4;i++)
for(j=0;j<3;j++)
scanf("%d",a[i][j]);

for(i=0;i<4;i++)
for(j=0;j<3;j++)
sumr[i] += a[i][j];

for(j=0;j<3;j++)
for(i=0;i<4;i++)
sumc[j] += a[i][j];

for(i=0;i<4;i++)
sum += sumr[i];

for(i=0;i<3;i++)
printf("sum of the column is %d\n",sumc[i]);

for(i=0;i<4;i++)
printf("sum of the row is %d\n",sumr[i]);

printf("the total of the table is %d ",sum);
}

2007-08-07 12:01
小说贝斯
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-8-4
收藏
得分:0 
以下是引用aipb2007在2007-8-7 11:59:36的发言:

你连这个区别也看不出来???

数组里第5行第4列那个元素,你用了两次赋值为0,标准答案一次。

没什么希奇,效果都一样。

呵呵,偶是个初学者,让斑竹见笑了!!
现在明白了,原来是初始化多了一次啊!难怪结果一样!谢谢各位了!

Standing on Shoulders of Giants
2007-08-07 12:13
快速回复:[求助]关于二维数组应用的问题!
数据加载中...
 
   



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

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