搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 请问这个程序错在哪里了?!
标题:
请问这个程序错在哪里了?!
只看楼主
眼圈黑黑
等 级:
论坛游民
帖 子:27
专家分:20
注 册:2010-4-7
结帖率:
60%
楼主
已结贴
√
问题点数:20 回复次数:10
请问这个程序错在哪里了?!
刚才看了个帖子不是很明白
这个程序错在哪里了?!
输出最大者:
#include <stdio.h>
void main()
{
int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
printf("%d",a<b?b:(a>c?a:c));
}
搜索更多相关主题的帖子:
include
void
2010-04-16 21:43
bj2010
等 级:
论坛游民
帖 子:12
专家分:53
注 册:2010-4-16
第
2
楼
得分:10
good,我喜欢会用三元操作符的初学者。
1、
scanf("%d,%d,%d",&a,&b,&c); 不要加逗号,不然只有a被扫描进去,不信你可以试着打印a, b, c
2、
a<b?b:(a>c?a:c)逻辑有问题,先整理一下
if (a < b){
printf("%d\n", b);
}else{
if (a > c){
printf("%d\n",a);
}else{
printf("%d\n",c);
}
}
看出问题了没有,只要b > a就不去比较b和c的关系,直接打印b
2010-04-16 21:49
tdy1006
等 级:
业余侠客
帖 子:173
专家分:240
注 册:2009-5-13
第
3
楼
得分:0
程序没错,注意输入的格式 “1,2,3”
在中间加入逗号
2010-04-16 22:08
nunununu
等 级:
论坛游民
帖 子:22
专家分:32
注 册:2010-3-31
第
4
楼
得分:10
源程序的确出了问题,
应该是:
printf("%d",a<b?(b>c?b:c):(a>c?a:c));
因为三个数无论如何,每一个数都要比较两次,才能产生最大值。
[
本帖最后由 nunununu 于 2010-4-16 22:23 编辑
]
2010-04-16 22:18
眼圈黑黑
等 级:
论坛游民
帖 子:27
专家分:20
注 册:2010-4-7
第
5
楼
得分:0
谢谢楼上诸位,理解了
问题如2楼所说
解决方法如4楼所说
总结下:逻辑上两两比较是关键
2010-04-16 22:31
任永旺
来 自:河南项城
等 级:
新手上路
帖 子:9
专家分:2
注 册:2010-4-16
第
6
楼
得分:0
程序没错啊,应该是输入的问题了,输入时数与数之间加都好了
追风少年!
2010-04-16 22:33
眼圈黑黑
等 级:
论坛游民
帖 子:27
专家分:20
注 册:2010-4-7
第
7
楼
得分:0
回复 6楼 任永旺
我试过了,源程序确实是错了,
问题就是2楼所说的,如果a<b,直接就打印b了,也就是说无论c多大,输出的结果也是b
解决办法就是4楼所说的
2010-04-16 22:47
甁瓶里D罐罐
等 级:
论坛游民
帖 子:34
专家分:20
注 册:2010-1-21
第
8
楼
得分:0
#include <stdio.h>
void main()
{
int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
printf("%d",a<b?(b>c?b:c):(a>c?a:c));
}
为什么改成这样 还是有错呢 输入三个数 不论大小 结果永远都是第一个数
2010-04-16 23:04
眼圈黑黑
等 级:
论坛游民
帖 子:27
专家分:20
注 册:2010-4-7
第
9
楼
得分:0
回复 8楼 甁瓶里D罐罐
楼上,我拷贝了你的程序运行了
结果是可以实现最大数输出的
2010-04-17 08:45
甁瓶里D罐罐
等 级:
论坛游民
帖 子:34
专家分:20
注 册:2010-1-21
第
10
楼
得分:0
回复 9楼 眼圈黑黑
额你看截图
2010-04-17 19:49
11
1/2页
1
2
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-303300-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 1.269287 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved