关于一道C语言题目
给出一百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80~89分为‘B’,70~79分为‘C',60~69分为‘D’,60分一下...
给出一百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80~89分为‘B’,70~79分为‘C',60~69分为‘D’,60分一下为‘E‘。
我的做法为:
#include<stdio.h>
int main()
{
float score;
char grade;
scanf("%f",&score);
while(score>100||score<0)
{printf("\n输入有错,请重新输入!");
scanf("%f",&score);
}
switch(int(score/10))
{
case 10:
case 9:grade='A';break;
case 8:grade='B';break;
case 7:grade='C';break;
case 6:grade='D';break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:grade='E';break;
}
检查出来的错误为:
C:\Users\Pro\Desktop\2.c(11) : error C2059: syntax error : 'type'
C:\Users\Pro\Desktop\2.c(14) : error C2043: illegal break
C:\Users\Pro\Desktop\2.c(15) : error C2046: illegal case
C:\Users\Pro\Desktop\2.c(15) : error C2043: illegal break
C:\Users\Pro\Desktop\2.c(16) : error C2046: illegal case
C:\Users\Pro\Desktop\2.c(16) : error C2043: illegal break
C:\Users\Pro\Desktop\2.c(17) : error C2046: illegal case
C:\Users\Pro\Desktop\2.c(17) : error C2043: illegal break
C:\Users\Pro\Desktop\2.c(18) : error C2046: illegal case
C:\Users\Pro\Desktop\2.c(19) : error C2046: illegal case
C:\Users\Pro\Desktop\2.c(20) : error C2046: illegal case
C:\Users\Pro\Desktop\2.c(21) : error C2046: illegal case
C:\Users\Pro\Desktop\2.c(22) : error C2046: illegal case
C:\Users\Pro\Desktop\2.c(23) : error C2046: illegal case
C:\Users\Pro\Desktop\2.c(23) : error C2043: illegal break
执行 cl.exe 时出错.
请帮忙看一下,谢谢! 展开
我的做法为:
#include<stdio.h>
int main()
{
float score;
char grade;
scanf("%f",&score);
while(score>100||score<0)
{printf("\n输入有错,请重新输入!");
scanf("%f",&score);
}
switch(int(score/10))
{
case 10:
case 9:grade='A';break;
case 8:grade='B';break;
case 7:grade='C';break;
case 6:grade='D';break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:grade='E';break;
}
检查出来的错误为:
C:\Users\Pro\Desktop\2.c(11) : error C2059: syntax error : 'type'
C:\Users\Pro\Desktop\2.c(14) : error C2043: illegal break
C:\Users\Pro\Desktop\2.c(15) : error C2046: illegal case
C:\Users\Pro\Desktop\2.c(15) : error C2043: illegal break
C:\Users\Pro\Desktop\2.c(16) : error C2046: illegal case
C:\Users\Pro\Desktop\2.c(16) : error C2043: illegal break
C:\Users\Pro\Desktop\2.c(17) : error C2046: illegal case
C:\Users\Pro\Desktop\2.c(17) : error C2043: illegal break
C:\Users\Pro\Desktop\2.c(18) : error C2046: illegal case
C:\Users\Pro\Desktop\2.c(19) : error C2046: illegal case
C:\Users\Pro\Desktop\2.c(20) : error C2046: illegal case
C:\Users\Pro\Desktop\2.c(21) : error C2046: illegal case
C:\Users\Pro\Desktop\2.c(22) : error C2046: illegal case
C:\Users\Pro\Desktop\2.c(23) : error C2046: illegal case
C:\Users\Pro\Desktop\2.c(23) : error C2043: illegal break
执行 cl.exe 时出错.
请帮忙看一下,谢谢! 展开
6个回答
2014-08-07
展开全部
switch ((int)(score / 10))
C语言强制转换的形式规定 ,形式为: (类型说明符) (表达式)
C语言强制转换的形式规定 ,形式为: (类型说明符) (表达式)
追问
还真是,可是为什么呢
追答
人家就这么规定的啊
展开全部
switch(int(score/10))
改为
switch((int)(score/10))
试试
改为
switch((int)(score/10))
试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
switch case只能是整型为字符变量,你是float肯定不行啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有两处错误
1.switch(int(score/10))改为switch((int)score/10)
2.在最后面掉了一个属于main()的"}"
1.switch(int(score/10))改为switch((int)score/10)
2.在最后面掉了一个属于main()的"}"
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把int(score/10)改为(int)(score/10)
追问
还真是,可是为什么呢
追答
强转的语法是(转换后的类型)原表达式
具体百度~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最后少一个大括号,case应该printf出来,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询