注册 登录
编程论坛 C语言论坛

switch语句

huyvht 发布于 2020-11-08 22:41, 2693 次点击
#include <stdio.h>
int main()
{
    char grade;
    scanf("%c",&grade);
    printf("score");
    switch(grade)
    {
    case'A':printf("90~100\n");break;
    case'B':printf("80~89\n");break;
    case'C':printf("70~79\n");break;
    case'D':printf("60~69\n");break;
    case'E':printf("0~60\n");break;
    default:printf("enter data error\n");
    }
return 0;
}
只有本站会员才能查看附件,请 登录

请问是哪里出错了?
11 回复
#2
纯蓝之刃2020-11-09 08:08
你输入了什么,预计输出了什么,实际输出了什么,你要提供一下。要不谁知道有什么问题。程序能编译成功,那这个程序就是正确的,你只能说程序设计的不符合你的预期,不能说他错了。
#3
rjsp2020-11-09 09:08
回复 2楼 纯蓝之刃
不管输入如何,起码得输出个“score”吧。
所以我猜出,题主可能根本不会操作计算机,他给的 源代码 和 运行时截图 根本不是同一个程序的。
#4
apull2020-11-09 13:57
同意楼上
#5
风过无痕19892020-11-09 16:42
回复 楼主 huyvht
首先,可以肯定的是你贴错图了,程序中没有MAX,图中怎么有呢?

其次,我在外旅游,没法用我自己的电脑验证你的程序,但将你的程序贴到咱们论坛的“在线编程” https://www.bccn.net/run/ 中运行,程序是没有问题的,输入大写字母A,输出对应的是90—100
#6
jyxiasf2020-11-09 19:14
呵呵,程序本身肯定没问题。肯定是看错输出窗口了
#7
huyvht2020-11-09 21:50
贴错图了
是这张图
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2020-11-9 21:51编辑过]

#8
rjsp2020-11-10 08:48
回复 7楼 huyvht
程序代码:
#include <stdio.h>

int main( void )
{
    unsigned score;
    if( scanf("%u",&score)!=1 || score>100 )
    {
        puts( "enter data error" );
        return 1;
    }

    char grade;
    switch( score/10 )
    {
    default: grade = 'E'; break;
    case  6: grade = 'D'; break;
    case  7: grade = 'C'; break;
    case  8: grade = 'B'; break;
    case  9:
    case 10: grade = 'A'; break;
    }
    printf( "grade: %c\n", grade );
}
#9
rjsp2020-11-10 09:08
回复 7楼 huyvht
我觉得你又混乱了,
从你的代码看,你想输入 等级,输出 得分段;
从你的截图看,你想输入 得分,输出 等级。
你到底是想要什么功能?

程序代码:
#include <stdio.h>

int main( void )
{
    char grade;
    if( scanf("%c",&grade)!=1 || grade<'A' || grade>'E' )
    {
        puts( "enter data error" );
        return 1;
    }

    switch( grade )
    {
    case 'A': puts("score 90~100"); break;
    case 'B': puts("score 80~89"); break;
    case 'C': puts("score 70~79"); break;
    case 'D': puts("score 60~69"); break;
    case 'E': puts("score 0~59"); break;
    }
}
#10
huyvht2020-11-10 22:04
回复 9楼 rjsp
我想输入分数得到等级
unsigned score;
    if( scanf("%u",&score)!=1 || score>100 )
    {
        puts( "enter data error" );
        return 1;
    }
这一段是什么意思?
#11
apull2020-11-10 23:15
输入分数得到等级用if  else吧。

上面那一段是判断输入是否在合理范围内。
#12
风过无痕19892020-11-11 01:11
回复 10楼 huyvht
你原来的程序没有问题,是输入等级,输出成绩;现在要想输入成绩,输出相应的等级,只须稍稍改动一一程序即可:
程序代码:

#include <stdio.h>
int main()
{
    int grade;
    float score;
    printf("score is: ");
    scanf("%f",&score);
   
    grade = score /10;
    switch(grade)
    {
    case 10:printf("grade A\n");break;
    case 9:printf("grade A\n");break;
    case 8:printf("grade B\n");break;
    case 7:printf("grade C\n");break;
    case 6:printf("grade D\n");break;
    case 5:
    case 4:
    case 3:
    case 2:
    case 1:printf("grade E\n");break;
    default:printf("enter data error\n");
    }
    return 0;
}
1