标题:[求助]一个能编译成功但得不到理想结果的程序
只看楼主
天使之鹰
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-4-19
 问题点数:0 回复次数:10 
[求助]一个能编译成功但得不到理想结果的程序
"给出一百分制成绩,要求输出成绩等级‘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();
}
搜索更多相关主题的帖子: 理想 编译 结果 得不到 
2007-04-22 15:52
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
得分:0 
if(90<=a<=100)
改为:if(90<=a && a<=100)
以此类推.

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-04-22 16:00
spider1987
Rank: 1
等 级:新手上路
帖 子:172
专家分:0
注 册:2007-2-18
得分:0 
if(90<=a<=100)


C语言是不能这样表达的- -。。。。。
而且用if来写太麻烦了吧
用swich
case来写比较简单一点
2007-04-22 16:16
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
得分:0 
可以这样写
得结果会和想象中不同
例如:
1<2<3的结果是:1
1<-1<3的结果还是:1

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-04-22 16:24
天使之鹰
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-4-19
得分:0 
以下是引用neverTheSame在2007-4-22 16:00:17的发言:
if(90<=a<=100)
改为:if(90<=a && a<=100)
以此类推.

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


愿愛你的人更愛你; 你愛的人更懂你!
2007-04-22 16:30
ml342418175
Rank: 1
等 级:新手上路
威 望:1
帖 子:183
专家分:0
注 册:2007-4-13
得分:0 
我也是犯过这样的错误

做人要洒脱一点,潇洒一点!
2007-04-22 16:37
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
得分:0 

首先呢,我是推荐你用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-04-22 16:39
天使之鹰
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-4-19
得分:0 
以下是引用福尔摩斯在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-04-22 16:48
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
得分:0 
以下是引用天使之鹰在2007-4-22 16:48:16的发言:

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

你取整了没有?

比如你定义分数为fenshu:

(int)fenshu;

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

你是这样写得吗?


自我放逐。。。
2007-04-22 16:51
天使之鹰
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-4-19
得分:0 
以下是引用福尔摩斯在2007-4-22 16:51:26的发言:

你取整了没有?

比如你定义分数为fenshu:

(int)fenshu;

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

你是这样写得吗?

哦!我再修改一下吧!


愿愛你的人更愛你; 你愛的人更懂你!
2007-04-22 17:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-134016-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.734418 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved