大神解惑。C语言里字符比较大小,有个题目根据asc码表对输入的三个字符进行从小到大排序,
问题描述:
这个题目我已经做出来了,但是我不能理解为什么不能直接用比较大小进行排序,比如
scanf("%c%c%c",a,b,c);if(a>b>c) printf("%c %c%c",c,b,a),如果我这样写就会没有输出,想知道为什么,
答
终于知道为什么啦,因为每次输入加了空格,空格也是字符,所以我以为我代码错了
答
if (a>b && b > c)
不能连写
答
你那么写也是可以的,但是要这么写
if (a>=b && b >= c) printf("%c %c%c",c,b,a);
if (b>=a && b >= c) printf("%c %c%c",c,a,b);
if (c>=a && a >= b) printf("%c %c%c",b,a,c);
...
一共写6行,才能把所有情况都考虑
答
请忽略到我没有取&,这个不是重点,我取了&也是不能比较
答
你的scanf读数据的时候为什么没有加 & 取址符呢
答
如果是4个数字,那么就是4x3x2=24行
如果是5个数字,就是5!行
所以你那么写太呆了。
#请注意,你的结贴率太低,如果回答你的问题解决,请点下我回答右边的采纳,谢谢。
答
所以最好的办法是用标准的排序算法
if (a > b) 交换ab
if (b > c) 交换bc
if (a > b) 交换ab //注意这个调用2次
此时a b c就是从小到大了
答
还是不对啊,我当时先做了个假设只比较两个字符,但是也不能得出正确答案。
scanf("%c%c",&a,&b);
if(a>b) printf("%c",a);
else printf("%c",b);
头文件我就不写了,这个代码还是错的
答
你在输入a和b之间加入了空格,系统自动把b赋值成了空格。
答
另外,谁说的if能同时比较三个数据的?应该用if……else……嵌套。