回 帖 发 新 帖 刷新版面

主题:求助,刚学编程碰到问题啦

#include<stdio.h>
void main()
{int x;
float grade;
printf("please enter a grade:");
scanf("%lf",&grade);
x=int(grade/10);
switch(x)
{case 9:printf("A\n");break;
 case 8:printf("B\n");break;
 case 7:printf("C\n");break;
 case 6:printf("D\n");break;
 case 5:
 case 4:
 case 3:
 case 2:
 case 1:printf("E\n");break;
}
}
为什么没有输出呢?

回复列表 (共5个回复)

沙发


scanf("%1f",&grade);

%1f  有问题  只取了一位  转换成int 时总是为0,所以相应的case匹配

板凳

我知道了,把lf改成f,但我还是不懂为什么lf就错了?哪位哥哥姐姐可以讲的详细点?

3 楼

%f代表的是float,%lf代表的是double,你上面定义了grade是float。。。。

4 楼

float是单精度的,所以只能是%f,%lf前面的l是指long
是代表double双精度的

5 楼

上面说的对

我来回复

您尚未登录,请登录后再回复。点此登录或注册