当前位置: 代码迷 >> C语言 >> 新人,求教~~
  详细解决方案

新人,求教~~

热度:109   发布时间:2006-06-24 21:12:57.0
新人,求教~~

学生百分成绩输入,等级为A,B,C,D,E。90以上为A,80-89为B,70-79为C ,60-69为D,
60一下为E。
#include <stdio.h>
void main ()
{
float sorce;
char grade;
printf("input sorce\n");
scanf("%f",&sorce);
while(sorce<0||sorce>100)
{
printf("erro");
}
(int)(sorce=sorce/10);
switch(sorce)
{
case10:
case9: grade='A';break;
case8: grade='B';break;
case7: grade='C';break;
case6: grade='D';break;
case5:
case4:
case3:
case2:
case1:
case0: grade='E';

}
printf("grade=%c\n",grade);
}


这是我自己写的,但是有错误,输出结果不对,但不知道哪错了,麻烦高人指点下。

[此贴子已经被作者于2006-6-24 21:22:33编辑过]

搜索更多相关的解决方案: 新人  

----------------解决方案--------------------------------------------------------
以下是引用wee在2006-6-24 21:12:57的发言:

学生百分成绩输入,等级为A,B,C,D,E。90以上为A,80-89为B,70-79为C ,60-69为D,
60一下为E。
#include <stdio.h>
void main ()
{
float sorce;
char grade;
printf("input sorce\n");
scanf("%f",&sorce);
if(sorce<0||sorce>100)
{
printf("erro");
return 0;
}
sorce=sorce/10;
switch((int)sorce)
{
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';

}
printf("grade=%c\n",grade);
}


这是我自己写的,但是有错误,输出结果不对,但不知道哪错了,麻烦高人指点下。


----------------解决方案--------------------------------------------------------
    楼上的别笑啊。。我就是最后输出字符不对,但是不知道哪错了,麻烦指点啊,。。
----------------解决方案--------------------------------------------------------
不给你改过了吗..复制运行就可以了
----------------解决方案--------------------------------------------------------
  斑竹老大可以说明白点吗,,我看了你改的,但是还是没明白我错在哪了字符输出不一样。就为了这道题,我看了答案,又看了自己写的,还真的一直没弄明白自己到底错在哪了。
----------------解决方案--------------------------------------------------------
以下是引用wee在2006-6-24 21:12:57的发言:

学生百分成绩输入,等级为A,B,C,D,E。90以上为A,80-89为B,70-79为C ,60-69为D,
60一下为E。
#include <stdio.h>
void main ()
{
float sorce;
char grade;
printf("input sorce\n");
scanf("%f",&sorce);
while(sorce<0||sorce>100) /* 无限循环.错误 */
{
printf("erro");
}
(int)(sorce=sorce/10); /* 你的强制类型转换概念不够 */
switch(sorce) /* 上面转了不代表下面也转,这是主要的错误 */
{
case10:
case9: grade='A';break; /* 可笑的错误.case 与 9之间需要有空格 */
case8: grade='B';break;
case7: grade='C';break;
case6: grade='D';break;
case5:
case4:
case3:
case2:
case1:
case0: grade='E';

}
printf("grade=%c\n",grade);
}


这是我自己写的,但是有错误,输出结果不对,但不知道哪错了,麻烦高人指点下。



----------------解决方案--------------------------------------------------------
谢谢老大啊。原来CASE与常量表达式之间要有空格。我 靠,老谭的这本书上这么重要的居然没写!!!!难怪我一直输出的字符不对。。。现在总算明白了。。。。太感谢了。


----------------解决方案--------------------------------------------------------
以下是引用wee在2006-6-24 22:39:38的发言:
谢谢老大啊。原来CASE与常量表达式之间要有空格。我 靠,老谭的这本书上这么重要的居然没写!!!!难怪我一直输出的字符不对。。。现在总算明白了。。。。太感谢了。

睡不着觉怪床歪。谭老又背黑锅一口!


----------------解决方案--------------------------------------------------------
是的,是没有空格啊,还有要注意的是 CASE 常量表达式后面最好要规范一点输出语句要写上printf("");
----------------解决方案--------------------------------------------------------
  相关解决方案