有关C++中switch的问题

2025-04-17 17:38:59
推荐回答(5个)
回答1:

可以,有个小问题是60,80放在哪个分数段里,我按自己的理解写了。
#include
void main()
{
int score;
cout<<"输入分数(0-100):"<cin>>score;
switch(score/10)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
cout<<"C"<case 6:
case 7:
cout<<"B"<case 8:
case 9:
case 10:
cout<<"A"<}
}
因为case后只能是常量表达式,所以把分数转换为10分段的会简单。也可以变为20分段,情况更少,不过10分段较有实际意义。

回答2:

这种范围的只能用if来判断,
不然只有这样子了,不过这个方法太挫了
switch(x)
{
case 0:
case 1:
.....
case 60:
cout << "c" << endl;
break;
case 61:
case 62:
......
case 80:
cout << "B" << endl;
break;
case 81:
case 82:
....
case 100:
cout << "A" << endl;
break;
}

回答3:

int a;
scanf("%d",&a);
int res = a/20;
char tag;
switch(res) {
case 3: tag='B'; break;
case 4: tag='A'; break;
case 5: tag='A'; break;

default: tag='C'; break;
}
printf("%c\n", tag);

不用if的话这样就ok了

回答4:

利用数字的共性进行缩小范围:
#include
int main(void)
{
int score;

printf("Plese input a number(0-100): ");
scanf("%d", &score);
switch(score/20) {
case 0: case 1: case 2: printf("C\n"); break;
case 3: printf("B\n"); break;
case 4: printf("A\n"); break;
}
return 0;
}

回答5:

switch 很麻烦的

int main() {
double score = 0;
cin >> score;
0 <= score && score < 60 ? cout << "C" : void(0);
60 <= score && score < 80 ? cout << "B" : void(0);
80 <= score && score <= 100 ? cout << "A" : void(0);
return EXIT_SUCCESS;
}