黑马程序员技术交流社区

标题: if 判断语句 [打印本页]

作者: dawei233    时间: 2014-7-24 13:39
标题: if 判断语句
本帖最后由 dawei233 于 2014-7-24 15:27 编辑

题目是酱紫:输入一个整数score代表分数,根据分数输出等级A-E
A:90~100
B:80~89
C:70~79
D:60~69
E:0~60
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int score;
  5.     printf("请输入一个0到100之间的分数\n");
  6.     scanf("%d",&score);
  7.     if (0<=score<60) {
  8.         printf("E\n");
  9.     }
  10.     if (60<=score<70) {
  11.         printf("D\n");
  12.     }
  13.     if (70<=score<80) {
  14.         printf("C\n");
  15.     }
  16.     if (80<=score<90) {
  17.         printf("B\n");
  18.     }
  19.     if (90<=score<=100) {
  20.         printf("A\n");
  21.     }
  22.     else
  23.         printf("请输入一个0到100之间的分数");
  24. }
复制代码

好奇怪,在xcode中跑,敲个 60
居然输出是:
EDCBA

if 判断有问题吗?求知心姐姐哥哥们解答。{:3_64:}

作者: 天蚕飞    时间: 2014-7-24 13:54
你真当做高数题分情况讨论呢呀,起码搞成这样呀if((score >= 0)&&(score <= 60))
作者: 努力微笑    时间: 2014-7-24 13:57
本帖最后由 努力微笑 于 2014-7-24 14:00 编辑

if (0<=score<60) 不要这么写。。。楼上的写法是对的       if (0<=score<60)  这么写,会先判断左边 60>=0为1,再判断右边1<60,为1,执行。下面同理
Ps:编辑帖子回车换行没用 = =
作者: dawei233    时间: 2014-7-24 14:24
努力微笑 发表于 2014-7-24 13:57
if (0

可是,但是,我把第2个if改为 else if 然后就可以跑了,输出也正确。。。{:3_55:}
作者: 努力微笑    时间: 2014-7-24 14:49
dawei233 发表于 2014-7-24 14:24
可是,但是,我把第2个if改为 else if 然后就可以跑了,输出也正确。。。 ...

首先你的代码写法是错误的,实际输出也是错误的。
正确写法看1L
按照你的程序 输入60 第二个if改为 else if 输出结果为ECBA
如果判断写法你没有改 第一句判断结果是真,输出1,第二个else if 不执行 然后向下继续执行,过程同第一个if

作者: 努力微笑    时间: 2014-7-24 14:58
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int score;
  5.     printf("请输入一个0到100之间的分数\n");
  6.     scanf("%d",&score);
  7.     if ((score >= 0)&&(score < 60)) {
  8.         printf("E\n");
  9.     }
  10.     else if ((score >= 60)&&(score < 70)) {
  11.         printf("D\n");
  12.     }
  13.     else if ((score >= 70)&&(score < 80)) {
  14.         printf("C\n");
  15.     }
  16.     else if ((score >= 80)&&(score < 90)) {
  17.         printf("B\n");
  18.     }
  19.     else if ((score >= 90)&&(score <= 100)) {
  20.         printf("A\n");
  21.     }
  22.     else
  23.         printf("请输入一个0到100之间的分数");
  24. }
复制代码


你可以看一下,比较数值的运算顺序很好理解。看视频需要认真一点,有一些注意点的
作者: dawei233    时间: 2014-7-24 15:26
努力微笑 发表于 2014-7-24 14:58
你可以看一下,比较数值的运算顺序很好理解。看视频需要认真一点,有一些注意点的 ...

感谢答疑。马上补做功课。这么一个发帖回帖,印象马上深刻了!!!再次谢谢。
作者: 努力微笑    时间: 2014-7-24 15:33
dawei233 发表于 2014-7-24 15:26
感谢答疑。马上补做功课。这么一个发帖回帖,印象马上深刻了!!!再次谢谢。 ...

不客气,帮助你的同时我也巩固了一下,一同进步。
视频中有些注意点老师有时会一句话带过,看的时候还真是需要认真一些 =。=
不明白来回多看几遍,整理下思路,了解程序执行过程就能理解了
加油!
作者: 阳光地带    时间: 2014-7-24 21:21
这个题目用switch语句比较合适,if else可读性太差。
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int score;
  5.     printf("请输入分数:");
  6.     scanf("%d", &score);
  7.    
  8.     switch (score/10) {
  9.         case 10:
  10.         case 9:
  11.             printf("你的等级是A");
  12.             break;
  13.         case 8:
  14.             printf("你的等级是B");
  15.             break;
  16.         case 7:
  17.             printf("你的等级是C");
  18.             break;
  19.         case 6:
  20.             printf("你的等级是D");
  21.             break;
  22.         default:
  23.             printf("你的等级是E");
  24.             break;
  25.     }
  26.    
  27.     return 0;
  28. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2