#include<stdio.h>
int main() {
int score = 87;
switch(score){
case 1:score>=90&&score<=100;printf("等级A") ;break;
case2:score>=80&&score<=90;printf("等级B"); break;
case3:score>=60&&score<80; printf("等级C");break;
default:score<60; printf("等级D");break;
}
return 0;
}
因为score的原始值是87,而switch(score)是直接判断score的值,case 1 就代表当score的值为1的时候,case 1: 冒号后面即是score == 1时执行的语句,所以说最score落到default里了,输出等级D。下面是根据源代码做的一点修改就能实现判断。只需要判断score的十位数
#include<stdio.h> int main() { int score = 87; score = score/10; /*下面的break好理解,关键就是这里。因为case后面带的值就是switch()括号里面的变量所代表的值,所以我这里做的处理是把score除10,因为score为int整型,所以除10之后个位数自动删去,得到8。这个8便能用到下面的switch语句中了。*/ switch(score) //这里score=8; { case 10: case 9: printf("等级A"); //当score=10或者9的时候,得到『等级A』 break; case 8: printf("等级B"); //当score=8时,得到『等级B』 break; case 7: case 6: printf("等级C"); //当score=7或6时,得到『等级C』 break; default: printf("等级D"); //在上面的score取值情况外,全部得到『等级D』 break; } /*所以说整个对score的值是做了一个处理的,因为只需要判断区间,即只需要判断score的十位数,所以做上面的除10的处理。*/ return 0; }
如果懂了的话就采纳一下哟!
你好像没理解case后面应写什么。
switch会将score的值与下面case后面的值(case之后,冒号之前)做匹配,匹配上就执行那个case冒号后面的语句。score和所有case都不匹配的话,就执行default: 后面的语句。
所以,你这样写,三个case分别是1 2 3,只有在score是1 2 3时才会执行相应case后的语句。而score是87,只会跳到default那里,执行default后面的语句。
public static void main(String[] args) {
int score = 1;
switch(score)
{
case 1:
System.out.println("A");
break;
case 2:
System.out.println("B");
default :
System.out.println("C");
}
}
}
原理一样,凑合看