当前位置: 代码迷 >> C语言 >> [求助]一个能编译成功但得不到理想结果的程序
  详细解决方案

[求助]一个能编译成功但得不到理想结果的程序

热度:112   发布时间:2007-04-22 15:52:05.0
[求助]一个能编译成功但得不到理想结果的程序
"给出一百分制成绩,要求输出成绩等级‘A’ ’B‘ ’C‘ ’D‘ ’E‘。90分以上的为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E"
我用if~else语句编出以下程序,能编译通过,但是得不到理想结果,希望大家能帮忙分析一下,并改正!谢谢!
#include <stdio.h>
void main()
{float a;
printf("Please input your mark:");
scanf("%f",&a);
if(90<=a<=100)
{
printf("Your grade is 'A'");
}
else if(80<=a<90)
{
printf("Your grade is 'B'");
}
else if(70<=a<80)
{
printf("Your grade is 'C'");
}
else if(60<=a<70)
{
printf("Your grade is 'D'");
}
else if(0<=a<60)
{
printf("Your grade is 'E'");
}
else if(a>100)
{
printf("Error");
}
else if(a<0)
{
printf("Error");
}
getch();
}
搜索更多相关的解决方案: 理想  编译  结果  得不到  

----------------解决方案--------------------------------------------------------
if(90<=a<=100)
改为:if(90<=a && a<=100)
以此类推.

----------------解决方案--------------------------------------------------------
if(90<=a<=100)


C语言是不能这样表达的- -。。。。。
而且用if来写太麻烦了吧
用swich
case来写比较简单一点
----------------解决方案--------------------------------------------------------
可以这样写
得结果会和想象中不同
例如:
1<2<3的结果是:1
1<-1<3的结果还是:1
----------------解决方案--------------------------------------------------------
以下是引用neverTheSame在2007-4-22 16:00:17的发言:
if(90<=a<=100)
改为:if(90<=a && a<=100)
以此类推.

谢谢!按照你说的,我又重新修改了一下,编译通过了!非常感谢!!


----------------解决方案--------------------------------------------------------
我也是犯过这样的错误
----------------解决方案--------------------------------------------------------

首先呢,我是推荐你用switch来做

当然你用if else也可以,比较烦琐,可读性也不高

然后,我推荐给你一种方法:

你看你题目的要求:

90分以上的为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E

换句话说就是,你只用到十位和百位上的数字,个位上的数字,你不管

那么你可以将输入的分数除10以后,在取整数

比如:你的输入的分数是75;那么按照上边的,先除10,得7.5,再取整(int),得7,显示结果就是C!

这个方法可以在switch用,也可以在if else中使用

比如:

if(a==90)printf("A");
else if(a==80)printf("B");……


----------------解决方案--------------------------------------------------------
以下是引用福尔摩斯在2007-4-22 16:39:44的发言:

首先呢,我是推荐你用switch来做

当然你用if else也可以,比较烦琐,可读性也不高

然后,我推荐给你一种方法:

你看你题目的要求:

90分以上的为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E

换句话说就是,你只用到十位和百位上的数字,个位上的数字,你不管

那么你可以将输入的分数除10以后,在取整数

比如:你的输入的分数是75;那么按照上边的,先除10,得7.5,再取整(int),得7,显示结果就是C!

这个方法可以在switch用,也可以在if else中使用

比如:

if(a==90)printf("A");
else if(a==80)printf("B");……

我用switch...break语句编译过,能通过!就是用你所说的这个方法!但是,用if else却犯了上面的错误!
----------------解决方案--------------------------------------------------------

以下是引用天使之鹰在2007-4-22 16:48:16的发言:

我用switch...break语句编译过,能通过!就是用你所说的这个方法!但是,用if else却犯了上面的错误!

你取整了没有?

比如你定义分数为fenshu:

(int)fenshu;

if(fenshu==9)printf("A");
else if……

你是这样写得吗?


----------------解决方案--------------------------------------------------------
以下是引用福尔摩斯在2007-4-22 16:51:26的发言:

你取整了没有?

比如你定义分数为fenshu:

(int)fenshu;

if(fenshu==9)printf("A");
else if……

你是这样写得吗?

哦!我再修改一下吧!

----------------解决方案--------------------------------------------------------

  相关解决方案