A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dawei233 中级黑马   /  2014-7-24 13:39  /  2126 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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:}

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

8 个回复

倒序浏览
你真当做高数题分情况讨论呢呀,起码搞成这样呀if((score >= 0)&&(score <= 60))
回复 使用道具 举报
本帖最后由 努力微笑 于 2014-7-24 14:00 编辑

if (0<=score<60) 不要这么写。。。楼上的写法是对的       if (0<=score<60)  这么写,会先判断左边 60>=0为1,再判断右边1<60,为1,执行。下面同理
Ps:编辑帖子回车换行没用 = =
回复 使用道具 举报

可是,但是,我把第2个if改为 else if 然后就可以跑了,输出也正确。。。{:3_55:}
回复 使用道具 举报
dawei233 发表于 2014-7-24 14:24
可是,但是,我把第2个if改为 else if 然后就可以跑了,输出也正确。。。 ...

首先你的代码写法是错误的,实际输出也是错误的。
正确写法看1L
按照你的程序 输入60 第二个if改为 else if 输出结果为ECBA
如果判断写法你没有改 第一句判断结果是真,输出1,第二个else if 不执行 然后向下继续执行,过程同第一个if
回复 使用道具 举报
  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. }
复制代码


你可以看一下,比较数值的运算顺序很好理解。看视频需要认真一点,有一些注意点的

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
努力微笑 发表于 2014-7-24 14:58
你可以看一下,比较数值的运算顺序很好理解。看视频需要认真一点,有一些注意点的 ...

感谢答疑。马上补做功课。这么一个发帖回帖,印象马上深刻了!!!再次谢谢。
回复 使用道具 举报
dawei233 发表于 2014-7-24 15:26
感谢答疑。马上补做功课。这么一个发帖回帖,印象马上深刻了!!!再次谢谢。 ...

不客气,帮助你的同时我也巩固了一下,一同进步。
视频中有些注意点老师有时会一句话带过,看的时候还真是需要认真一些 =。=
不明白来回多看几遍,整理下思路,了解程序执行过程就能理解了
加油!
回复 使用道具 举报
这个题目用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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马