如何使switch语句接受百分比而不是字母等级?
我试图找出如何让用户输入一个百分比,并让它吐出一个字母等级。当我运行这个程序时,它甚至都没有进入案例 预期输入:请输入您的成绩:70 预期输出:你得到了一个C如何使switch语句接受百分比而不是字母等级?,c,C,我试图找出如何让用户输入一个百分比,并让它吐出一个字母等级。当我运行这个程序时,它甚至都没有进入案例 预期输入:请输入您的成绩:70 预期输出:你得到了一个C #include <stdio.h> int main(void) { int percent; printf("Please enter your grade: "); scanf("%d", &percent); switch (percent) { c
#include <stdio.h>
int main(void)
{
int percent;
printf("Please enter your grade: ");
scanf("%d", &percent);
switch (percent)
{
case 1:
(percent >= 90);
puts("You got an A!");
break;
case 2:
(percent >= 80);
puts("You got a B!");
break;
case 3:
(percent >= 70);
puts("You got a C!");
break;
case 4:
(percent >= 60);
puts("You got a D!");
break;
case 5:
(percent < 60);
puts("You got an F!");
break;
}
}
#包括
内部主(空)
{
整数百分比;
printf(“请输入您的成绩:”);
scanf(“%d”、&percent);
开关(百分比)
{
案例1:
(百分比>=90);
放(“你得了A!”);
打破
案例2:
(百分比>=80);
放(“你得了B!”);
打破
案例3:
(百分比>=70);
puts(“你得了C!”);
打破
案例4:
(百分比>=60);
puts(“你得了D!”);
打破
案例5:
(百分比<60);
放(“你得了F!”);
打破
}
}
类似的方法可能会奏效。案例10和9未通过,案例5、4、3、2、1和0未通过
正如@rici指出的,%
在这里不起作用,但/
起作用
#include <stdio.h>
int main ( void){
char input[100] = "";
int percent = 0;
int result = 0;
do {
printf("Please enter your grade 0 to 100: " );
if ( fgets ( input, sizeof input, stdin)) {
result = sscanf ( input, "%d", &percent);
}
else {
fprintf ( stderr, "fgets EOF\n");
return 0;
}
} while ( result != 1 || percent < 0 || percent > 100);
switch( percent / 10){
case 10:
case 9:
puts ("You got an A!");
break;
case 8:
puts ("You got a B!");
break;
case 7:
puts ("You got a C!");
break;
case 6:
puts ("You got a D!");
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
puts ("You got an F!");
break;
}
}
#包括
内部主(空){
字符输入[100]=“”;
整数百分比=0;
int结果=0;
做{
printf(“请输入你的0至100分:”;
if(fgets(输入,输入大小,标准输入)){
结果=sscanf(输入,“%d”和百分比);
}
否则{
fprintf(标准术语,fgets EOF);
返回0;
}
}而(结果!=1 | |百分比<0 | |百分比>100);
开关(百分比/10){
案例10:
案例9:
放(“你得了A!”);
打破
案例8:
放(“你得了B!”);
打破
案例7:
puts(“你得了C!”);
打破
案例6:
puts(“你得了D!”);
打破
案例5:
案例4:
案例3:
案例2:
案例1:
案例0:
放(“你得了F!”);
打破
}
}
类似的方法可能会奏效。案例10和9未通过,案例5、4、3、2、1和0未通过
正如@rici指出的,%
在这里不起作用,但/
起作用
#include <stdio.h>
int main ( void){
char input[100] = "";
int percent = 0;
int result = 0;
do {
printf("Please enter your grade 0 to 100: " );
if ( fgets ( input, sizeof input, stdin)) {
result = sscanf ( input, "%d", &percent);
}
else {
fprintf ( stderr, "fgets EOF\n");
return 0;
}
} while ( result != 1 || percent < 0 || percent > 100);
switch( percent / 10){
case 10:
case 9:
puts ("You got an A!");
break;
case 8:
puts ("You got a B!");
break;
case 7:
puts ("You got a C!");
break;
case 6:
puts ("You got a D!");
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
puts ("You got an F!");
break;
}
}
#包括
内部主(空){
字符输入[100]=“”;
整数百分比=0;
int结果=0;
做{
printf(“请输入你的0至100分:”;
if(fgets(输入,输入大小,标准输入)){
结果=sscanf(输入,“%d”和百分比);
}
否则{
fprintf(标准术语,fgets EOF);
返回0;
}
}而(结果!=1 | |百分比<0 | |百分比>100);
开关(百分比/10){
案例10:
案例9:
放(“你得了A!”);
打破
案例8:
放(“你得了B!”);
打破
案例7:
puts(“你得了C!”);
打破
案例6:
puts(“你得了D!”);
打破
案例5:
案例4:
案例3:
案例2:
案例1:
案例0:
放(“你得了F!”);
打破
}
}
这不是开关语句的地方;这是安装if/else梯子的理想场所
if (percent >= 90) {
puts("You got an A!");
} else if (percent >= 80) {
puts("You got a B!");
} else if (percent >= 70) {
puts("You got a C!");
} else if (percent >= 60) {
puts("You got a D!");
} else {
puts("You got an F!");
}
这不是switch语句的地方;这是安装if/else梯子的理想场所
if (percent >= 90) {
puts("You got an A!");
} else if (percent >= 80) {
puts("You got a B!");
} else if (percent >= 70) {
puts("You got a C!");
} else if (percent >= 60) {
puts("You got a D!");
} else {
puts("You got an F!");
}
是的,我一开始就是这样的。我想把它作为练习的转换语句。是的,我一开始就是这样做的。我想把它作为一个开关语句来练习。关于这类语句:`(百分比>=90)`这些将不会编译!
switch()
语句在每个case
中只处理一个值,并且此代码尝试在每个case中处理一系列值。强烈建议使用一系列的if/else if
语句,而不要使用已发布的案例
值为1%或2%等。这不是您想要的want@user3629249-将编译语句(百分比>=90)
。不过,它不会执行OP所期望的操作(它没有可观察的效果,因为它会计算结果并丢弃它)这些将不会编译!switch()
语句在每个case
中只处理一个值,并且此代码尝试在每个case中处理一系列值。强烈建议使用一系列的if/else if
语句,而不要使用已发布的案例
值为1%或2%等。这不是您想要的want@user3629249-将编译语句(百分比>=90)
。但它不会做OP期望的事情(它没有可观察的效果,因为它计算结果并丢弃它)。