c - 从 If 语句切换到 Switch 语句

标签 c

是否有任何信息或示例可以帮助我将代码流程从使用 If 语句更改为 switch-case 语句?

#include <stdio.h>

int main(void){
    double averageGrade;

    printf("\nThe average grade is:");
    scanf("%1f", &averageGrade);

    // output appropriate message for average grade
    if (averageGrade > 3.5) {
        printf("Average grade is A");
    }
    else if(averageGrade > 2.5) {
        printf("Average grade is B");
    }
    else if (averageGrade > 1.5) {
        printf("Average grade is C");
        }
    else if (averageGrade > 0.5) {
        printf("Average grade is D");
    }
    else {
        printf("Average grade is F");
    }
    return 0;
}

最佳答案

建议既不要使用 if-else if 语句链,也不使用 switch 语句。

下面的代码可以很好地实现需求。

#include <stdio.h>
#include <stdlib.h>

struct grades
{
    double avgGrade;
    char  letGrade;
};

int main(void)
{
    double testAverageGrade;

    printf("\nEnter the average grade: ");
    if( scanf("%lf", &testAverageGrade) != 1 )
    {
        fprintf( stderr, "scanf for average grade failed\n" );
        exit( EXIT_FAILURE );
    }

    // implied else, scanf successful


    struct grades gradesTbl[] =
    {
        {  3.5, 'A' },
        {  2.5, 'B' },
        {  1.5, 'C' },
        {  0.5, 'D' },
        {  0.0, 'F' },
    };

    size_t numGrades = sizeof( gradesTbl ) / sizeof( gradesTbl[1] );

    for( size_t i=0; i<numGrades; i++ )
    {
        if( testAverageGrade > gradesTbl[i].avgGrade )
        {
            printf("Average grade is %c\n", gradesTbl[i].letGrade);
            break;
        }
    }
}

关于c - 从 If 语句切换到 Switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59417777/

相关文章:

c - 将 0 分配给 gcc 扩展程序集中的变量

使用C中的指针将数据从一维数组复制到二维数组?

c - 哪个是解决这个算法难题的好算法?

c - 动态分配的结构体指针数组

c - 如何只有一些参数到函数 C

c - 通过 Verilog VPI 将 256 位连线传递给 C 函数

c - 没有锁的一插入多读列表安全吗?

c - 我在打字时遇到一些麻烦

Java JNI C 程序适用于 Mingw32,但不适用于 Cygwin64

c - 我找不到我的代码的问题