求c语言大神解答

#include<stdio.h>
int main(void)
{
int a,b,c,d,e;
double g;
scanf("%lf",&g);
a=b=c=d=e=0;
if (0<=g<=60){
e++;
}
else if(g<=70){
d++;
}
else if(g<=80){
c++;
}
else if(g<=90){
b++;
}
else {a++;}
printf ("The numble of A(90~100):%d\n",a);
printf ("The numble of B(80~89):%d\n",b);
printf ("The numble of C(70~79):%d\n",c);
printf ("The numble of D(60~69):%d\n",d);
printf ("The numble of E(0~59):%d\n",e);
return 0;
}
为什么我程序出来总是e=1。。。

你这个程序有两个问题:
1、从你的输出看,应该是0~59 输出 e ,所以在第一if的位置 应该是g<60
2、同时,在第一个 if 的位置,你用的是表达式是错误的,因为关系运算的优先级是从左到右,所以,你输入任何一个数(只要大于等于0),你分一下步,第一步算0<=g,这个成立后,前面这部分就等于1,然后你再算(0<=g)<=60,所以你这个式子0<=g<=60是恒成立的,也就是你这个关系表达式算完的结果为1,这样的话if的条件就会恒成立,从而导致你的结果总是e=1...
应该用逻辑表达式 if (0<=g&&g<60) ,你再试一下!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-16
这个是统计分数的吧。
没有设置循环输入,也就是每次只输入一个数字 整个代码就运行完毕了。
试试用for来控制循环输入
int a=0,b=0,c=0,d=0,e=0;
double g;
while (g!=999)
{
scanf("%lf",&g);

if (0<=g&&g<=60)e++;
else if(g<=70) d++;
else if(g<=80) c++;
else if(g<=90) b++;
else a++;
}
printf ("The numble of A(90~100):%d\n",a);
printf ("The numble of B(80~89):%d\n",b);
printf ("The numble of C(70~79):%d\n",c);
printf ("The numble of D(60~69):%d\n",d);
printf ("The numble of E(0~59):%d\n",e);
return 0;
第2个回答  2012-04-16
(0<=g<=60)改成(0<=g&&g<=60)就行了
第3个回答  2012-04-16
if (0<=g<=60)应该用关系运算符来表示条件应为if(g>=0&&g<=60)