如何判断输入数字对应输出的英文

img


有点看不懂这里输入数字怎么对应输出英文,因为没怎么学习过这方面的知识,求赐教

程序A输出:PPFPPPThanks ;

程序B输出:Thanks ;

程序A输出“PPFPPPThanks”的原因是,在获取输入的分数后,用除以10的结果来给成绩赋值不同等级字符,然后判断完成后就输出这个等级,for循环结束打印一个“Thanks”;

而程序B输出“Thanks”的原因是,把打印成绩等级放到了switch-case语句中,然后case分支和default分支都有break,所以default后面的打印成绩等级字符这样永远不会执行,所以就只打印了for循环后面的“Thanks”。

测试代码如下:

参考链接:


https://blog.csdn.net/ld15353133609/article/details/127474956


#include <stdio.h>

int main(void){
    
    
    int i,score;
    char grade;
    
    
    for(i=1;i<7;i++){
        scanf("%d",&score);  // 获取一个分数 
        score=score/10; // 分数除以10 
    // https://www.runoob.com/cprogramming/c-switch.html    
        switch(score){ // 分数除以10等于 10,90,80,70,60 则grade赋值为'P' ,这里的分数即在60到109 之间 
            case 10: case 9: case 8: case 7: case 6:
                grade='P';break;
            default : // 其他情况 ,grade赋值为'F' 
                grade = 'F';break;    
        }
        
        putchar(grade); // 每次在switch-case语句计算完输入分数计算完等级后 ,则输出这个等级 
    }
    printf("Thanks");
    printf("\n");
    
    for(i=1;i<7;i++){
        scanf("%d",&score);
        score=score/10;
        
        switch(score){
            case 10: case 9: case 8: case 7: case 6: // 同上,分数除以10等于 10,90,80,70,60 则grade赋值为'P' ,这里的分数即在60到109 之间  
                grade='P';break;
            default :  // 其他情况 ,grade赋值为'F' 
                grade = 'F';break;    
            putchar(grade);     //不同在这里, 打印等级放到了swith-case语句里面, 而这行代码因为前面case和default都有break,所这行永远不会执行 
        }
        
        
    }
    
    printf("Thanks");
    
    
    return 0;
    
    
} 

img

大于59即除以10的结果大于5输出P否则输出F

这里将分数整除10,如果是10 9 8 7 6 就输出P,否则输出F
说白了就是60-100是P,60以下是F

这里的switch case语句控制的呀,满足什么条件就输出什么字符,如果score/10 为10,9,8,7,6.输出P其他输出F

img

供参考:https://www.cnblogs.com/goolu/p/8989832.html

Switch里的break是结束switch循环,所以putchar(grade);未执行,所以没有输出结果