#include<stdio.h> main() { int sum=0,a,i; float avg; for(i=0;i<10;i++) {printf("Please input score?

这个avg怎么输出不对啊?求教谢谢。#include<stdio.h>main(){intsum=0,a,i;floatavg;for(i=0;i<10;i++){pri... 这个avg怎么输出不对啊?求教谢谢。
#include<stdio.h>
main()
{
int sum=0,a,i;
float avg;

for(i=0;i<10;i++)
{printf("Please input score?");
scanf("%2d",&a);
if(a>=0&&a<=20)
sum=sum+a;
else
{printf("Error");
system("pause");}
}
avg=sum/10;
if(20>=avg>=16)
{printf("Grade is A");
system("pause");
exit(0);}
else if(16>avg>=12)
{printf("Grade is B");
system("pause");
exit(0);}
else if(12>avg>=10)
{printf("Grade is C");
system("pause");
exit(0);}
else if(10>avg>=7)
{printf("Grade is D");
system("pause");
exit(0);}
else if(7>avg>=4)
{printf("Grade is E");
system("pause");
exit(0);}
else if(4>avg>=0)
{printf("Grade is F");
system("pause");
exit(0);}
else

system("pause");
exit(0);
}
先说说我这道题吧,输入10个分数(0-20)求平均值,用for循环做。根据平均值打分
谢谢朋友们的帮助。
展开
 我来答
lmysdju
2010-10-06 · TA获得超过2264个赞
知道小有建树答主
回答量:332
采纳率:0%
帮助的人:460万
展开全部
我跟你看了一下,程序里面有几个错误:
1、判断出输入值不在0-20范围内后只有出错信息,而没有将i的值保持不变,所以导致一旦有这种数据出现时,不能保证有效数据为10个;
2、avg=sum/10;这个语句原意是用总和除以10得到平均值,然而根据数据类型的定义来推算是达不到预期结果的,如果保持定义时的数据类型不变,那么应修改为:avg=sum*1.0/10;
3、根据平均分评等级时,用的if判断条件表达式出错了,不能写成20>=avg>=16,而因该用avg>=16 &&avg<=20来表示同时成立。
根据题目要求,我重新写了一段程序,完全能满足题目要求,并且用数组储存输入的数。
#include<stdio.h>
#define N 10
main()
{
int a[N],i,sum=0;
float aver;
char grade;
printf("input score: \n");
for(i=0;i<N;i++)
{
printf("a[%2d]:",i);
scanf("%d",&a[i]);
while(a[i]<0 ||a[i]>20)
{
printf("again\na[%2d]:",i);
scanf("%d",&a[i]);
}
sum+=a[i];
}
aver=sum*1.0/N;
if(aver<4)grade='F';
else if(aver<7)grade='E';
else if(aver<10)grade='D';
else if(aver<12)grade='C';
else if(aver<16)grade='B';
else grade='A';
printf("Aver=%.3f\nGrade is %c.\n",aver,grade);
}
muyejingefeng
2010-10-06 · TA获得超过348个赞
知道小有建树答主
回答量:287
采纳率:0%
帮助的人:0
展开全部
#include<stdio.h>
int main()
{
int sum=0,a,i;
float avg;

for(i=0;i<10;i++)
{
printf("Please input score?");
scanf("%2d",&a);
if(a>=0&&a<=20)
sum=sum+a;
else
{
printf("Error");
system("pause");
}
avg=sum/10;
if(20>=avg>=16)
{
printf("Grade is A");
system("pause");
exit(0);
}
else if(16>avg && avg>=12)
{
printf("Grade is B");
system("pause");
exit(0);
}
else if(12>avg && avg>=10)
{
printf("Grade is C");
system("pause");
exit(0);
}
else if(10>avg && avg>=7)
{
printf("Grade is D");
system("pause");
exit(0);
}
else if(7>avg && avg>=4)
{
printf("Grade is E");
system("pause");
exit(0);
}
else if(4>avg && avg>=0)
{
printf("Grade is F");
system("pause");
exit(0);
}
else
system("pause");
}
return 0;
}

不能用4>avg>=0这样的式子,因为4>avg返回true或者false,也即是1或者0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun_siliang
2010-10-06 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4535万
展开全部
1.
{}不配对,程序不能运行。建议在avg=sum/10;前面加一个},程序才正确。
2.
16>avg>=12 等改为
16>avg && avg>=12
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友89d4b39
2010-10-06 · TA获得超过132个赞
知道答主
回答量:197
采纳率:0%
帮助的人:109万
展开全部
你用那么多if else 为啥不用switch case呢 这样清晰多了 是把??
呵呵

有啥问题 你可以在线找我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式