注册 登录
编程论坛 新人交流区

[求助] 关于switch 我刚开始学习C,求助各位xdjm关于 switch的问题

sennin 发布于 2007-11-15 11:08, 1128 次点击

谭的书上的一道习题,求成绩等级的,我编了如下的东西,但是提示有错误,我搞不明白,望大家指点一下哪里有错误,多谢了

float g,b;
scanf("%f",&g);
b=g/10;
if(b<6.0)printf("E\n");
if(b>=9.0)printf("A\n");

switch(b)
{case 7.0:printf("D\n");break;
case 8.0:printf("C\n");break;
case 8.9:printf("B\n");break;
default :printf("He or she is genius\n");}

10 回复
#2
yichun8702007-11-15 11:52

float g,b;
scanf("%f",&g);
b=g/10;
if(b<6.0)printf("E\n");
if(b>=9.0)printf("A\n");

switch(b)
{case 7.0:printf("D\n");break;
case 8.0:printf("C\n");break;
case 8.9:printf("B\n");break;
default :printf("He or she is genius\n");}
b,g是float类型的 比如是79/10=7.9 把b改成int就是了
#include <stdio.h>
main()
{
float g;
int b;
scanf("%f",&g);
b=g/10;
if(b<6)printf("E\n");
if(b>9)printf("A\n");

switch(b)
{
case 6:printf("D\n");break;
case 7:printf("C\n");break;
case 8:printf("B\n");break;
case 9:printf("A\n");break;
default :printf("He or she is genius\n");
}
}

#3
sennin2007-11-15 12:03
哦,明白了,改过来了,多谢帮助
#4
jisg_572007-11-15 12:19
我还是想不明白,为什么float型的就不行了??
#5
sennin2007-11-15 12:33

我理解的是case后面必须接整型,所以要改成int。

#6
lovexuli2007-11-15 13:06
楼上正解!
#7
andy520520522007-11-15 16:25
是啊
#8
angelwait2007-11-15 18:20

switch表达式 那是字符也可以吧

#9
sennin2007-11-15 18:22
可以,因为字符对应的ascii是整数。我也是初学,所以只能讲我是这样理解的
#10
codelet2007-11-16 07:26

所谓字符,只不过是枚举类型的一种形式,实际上它就是整数。

'A' = 65, '9' = 57

更加深入一点, char类型就是int类型,用typedef enum 来定义。
枚举类型可以解放程序员,在声明时可以使用有意义的名字,而不
是通用的符号int。

#11
Tony_bb2007-11-16 09:11

学到东西了

1