|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在做一个课后题:给出一个百分制的成绩,要求输出成绩等级,90分以上为A,80-89为B,70-79为C,60-69为D,低于60为E。
我分别写了两个(其实只是改变了else if里面内容的顺序,结果却完全不同,按逻辑应该结果一样的):
1.正确结果代码(就叫first吧):
- #include<stdio.h>
- int main(void)
- {
- int score;
- printf("请输入成绩:");
- scanf("%d",&score);
- if(score>=90) printf("%d的成绩等级为A",score);
- else if(score<60) printf("%d的成绩等级为E",score);
- else if(60<=score<=69) printf("%d的成绩等级为D",score);
- else if(70<=score<=79) printf("%d的成绩等级为C",score);
- else printf("%d的成绩等级为B",score);
-
- return 0;
- }
复制代码
2.与预期不一样的代码(second):
- #include<stdio.h>
- int main(void)
- {
- int score;
- printf("请输入成绩:");
- scanf("%d",&score);
- if(score>=90) printf("%d的成绩等级为A",score);
- else if(80<=score<=89) printf("%d的成绩等级为B",score);
- else if(70<=score<=79) printf("%d的成绩等级为C",score);
- else if(60<=score<=69) printf("%d的成绩等级为D",score);
- else printf("%d的成绩等级为E",score);
-
- return 0;
- }
复制代码
两个运行(使用的编译器为DEV C++),输入34
第一个first代码成功输出等级E
但第二个second代码却输出等级B
请问是什么原因?
第二个second代码问题出在哪里?
是这样的。在C中写区间不可以偷懒,只能两个相比
组合判断需要用到以下逻辑符号
与&& 或|| 非!
|
-
first代码运行结果
-
second代码运行结果
|