Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使switch语句接受百分比而不是字母等级?_C - Fatal编程技术网

如何使switch语句接受百分比而不是字母等级?

如何使switch语句接受百分比而不是字母等级?,c,C,我试图找出如何让用户输入一个百分比,并让它吐出一个字母等级。当我运行这个程序时,它甚至都没有进入案例 预期输入:请输入您的成绩:70 预期输出:你得到了一个C #include <stdio.h> int main(void) { int percent; printf("Please enter your grade: "); scanf("%d", &percent); switch (percent) { c

我试图找出如何让用户输入一个百分比,并让它吐出一个字母等级。当我运行这个程序时,它甚至都没有进入案例

预期输入:请输入您的成绩:70 预期输出:你得到了一个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期望的事情(它没有可观察的效果,因为它计算结果并丢弃它)。