| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1709 人关注过本帖, 1 人收藏
标题:一个简单的问题,高手勿见笑
取消只看楼主 加入收藏
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
结帖率:100%
收藏(1)
已结贴  问题点数:10 回复次数:9 
一个简单的问题,高手勿见笑
我是想在五个数中依次找出前三个大数并显示他们在数组中的位置,比如5个数为5,4,3,2,1,则答案应为
5,0
4,1
3,2
现在发现当数组中有重复数字时比如 5,5,5,4,3
答案应为
5,0
5,1
5,2
但运行后的答案却是
5,2
5,2
5,2
不知为什么  求高手指教,谢谢
main()
{
int *a,*b,*c,i,j,k,s1,s2,s3,n,t[5];
a=&t[0];
b=&t[1];
c=&t[2];
printf("\n");
for(i=0;i<=4;i++)
scanf("%d,",&t[i]);
for(i=0;i<=4;i++)
 {
 if(*a<t[i])
 a=&t[i];
 }
for(i=0;i<=4;i++)
{
if(*a==t[i])
s1=i;
}
printf("%d,%d\n",*a,s1);
for(j=0;j<=4;j++)
 {
 if(*b<t[j]&&s1!=j)
 b=&t[j];
 }
for(j=0;j<=4;j++)
 {
 if(*b==t[j])
 s2=j;
 }
printf("%d,%d\n",*b,s2);
for(k=0;k<=4;k++)
 {
 if(*c<t[k]&&s1!=k&&s2!=k)
 c=&t[k];
 }
for(k=0;k<=4;k++)
 {
 if(*c==t[k])
 s3=k;
 }
printf("%d,%d",*c,s3);
}


[ 本帖最后由 zzgzzg00 于 2010-9-10 09:28 编辑 ]
搜索更多相关主题的帖子: 见笑 
2010-09-09 21:27
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
我是想在五个数中依次找出前三个大数并显示他们在数组中的位置,比如5个数为5,4,3,2,1,则答案应为
5,0
4,1
3,2
现在发现当数组中有重复数字时比如 5,5,5,4,3
答案应为
5,0
5,1
5,2
但运行后的答案却是
5,2
5,2
5,2
不知为什么  求高手指教,谢谢


[ 本帖最后由 zzgzzg00 于 2010-9-10 09:27 编辑 ]

粗心是大敌
2010-09-09 23:15
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
呵呵  还是不行啊    比如输入4个5,加上break后得出的就是
5,0
5,0
5,0
不加就是
5,4
5,4
5,4
也就是说在有数字相同时s1!=j和s1!=k&&s2!=k命令就不奏效了

粗心是大敌
2010-09-10 14:45
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
回复 8楼 燕强
都加了啊,而且我也明白您的意思,但输入5个5后得出的结果依然是
5,0
5,0
5,0
也就是s1!=j和s1!=k&&s2!=k没起到作用,得出的结果是s1=j和s1=k
如果不加的话得出的结果是
5,4
5,4
5,4
即当系统找到要找的数后依然循环运行找下一个  直至循环结束,的到最后的那个数,是没有break的错。
是不是我的tc有毛病啊?

[ 本帖最后由 zzgzzg00 于 2010-9-10 16:03 编辑 ]

粗心是大敌
2010-09-10 15:58
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
回复 9楼 erikyo
没有  当输入的5个数是5,4,3,2,1时得出的结果是
5,0
4,1
3,2
虽然如您所说第二次循环找不到比5大的数,但因在循环是规定了s1!=j,所以第二次循环是将(5,0)去除了的
但奇怪的是当五个数种有重复数字时就不奏效了  不知为什么

粗心是大敌
2010-09-10 16:07
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
回复 6楼 燕强
你运行成功了啊    方便的话把代码发上来吧    谢谢

粗心是大敌
2010-09-10 17:13
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
回复 15楼 燕强
呵呵  其实我自己这样写的时候自己也嫌烦,不过因为我的c语言是在课余自学的,所以想多练练把基础掌握的好点,也看过别人做的类似的东西,不是很明白 ,哈,而且我的想法是想从几个数中找出两个之和比其他任何两数之和都大,而且这两数不相邻,就是在这个论坛里看到的一个帖子。实在做不出来了 不得已贴出代码来丢人 见笑见笑  

[ 本帖最后由 zzgzzg00 于 2010-9-10 18:31 编辑 ]

粗心是大敌
2010-09-10 18:20
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
好像p1,p2,p3初始值不能都指向a[0],要不当最大值在a[0]处时所求的值就都是a[0]了,而且当数字中有重复时也犯我上面说的错误,同样不知为什么。

粗心是大敌
2010-09-10 20:03
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
回复 19楼 c317158943
问题偶尔一下就说明程序是有问题的     

粗心是大敌
2010-09-10 22:51
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
回复 21楼 mysky2001
呵呵   言之甚是  以后注意 谢谢

粗心是大敌
2010-09-14 10:51
快速回复:一个简单的问题,高手勿见笑
数据加载中...
 
   



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

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