C语言求助。求助!!!!!!!!!!

#include<stdio.h>voidmain(){inta[10],no=0,ok=0,i,max=0,min=0,sum=0,b=0;floataver=0;pr... #include <stdio.h>
void main()
{
int a[10],no=0,ok=0,i,max=0,min=0,sum=0,b=0;
float aver=0;
printf("输入十个成绩\n");
for(i=0;i<10;i++)
{
//scanf("%d",&a[i]);
max=min=a[0];
for(;;)
{
scanf("%d",&a[i]);
if(a[i]>0)break;
else
printf("必须大于0\n");
for(i=0;i<10;i)
{
sum=sum+a[i];
aver=sum/10;
}
}
if(a[i]<60)
ok++;
else
no++;
}
printf("ok为%d\n",ok);
printf("no为%d\n",no);
if(a[i]>0)
{
for(i=0;i<10;i++)
{
if(a[i]>=max)
max=a[i];
if(a[i]<=min)
min=a[i];
}
//aver=sum/a[i];
printf("最大数为%d\n最小数为%d\n平均数为%f\n",max,min,aver);
}
}
平均数为什么总是输出为0.哪里错了?
求改正
展开
 我来答
snowland
2012-12-07 · 知道合伙人软件行家
snowland
知道合伙人软件行家
采纳数:1229 获赞数:7314
多次参加C++算法类竞赛获奖。

向TA提问 私信TA
展开全部
虽然你的aver定义的是float类型
但是sum和a[i]都是int型
相除的结果仍然是int型
应该改成aver=sum*1.0/a[i];
更多追问追答
追问
改了还是一样,不能输出平均成绩 - -
追答
我先打开编译器试一下啊
还有个逻辑问题
aver应该是总成绩除以人数
不应该是/a[i]吧
应该aver=sum*1.0/10;
还有,只需要for循环输入即可,不需要循环运算
#include
void main(){
int a[10],no=0,ok=0,i,max=0,min=0,sum=0,b=0;
float aver=0;
printf("输入十个成绩\n");
for(i=0;i0)
break;
else
printf("必须大于0\n");
for(i=0;i0){
for(i=0;i=max)
max=a[i];
if(a[i]<=min)min=a[i];
}
//
aver=sum*1.0/a[i];
printf("最大数为%d\n最小数为%d\n平均数为%f\n",max,min,aver);
}
}
力佁0h1
2012-12-07
知道答主
回答量:17
采纳率:0%
帮助的人:8.8万
展开全部
你的第二个循环 无限循环那里,当输入负数,才能跳到SUM总和计算,要不然他就会break;直接跳出内层循环,不会计算平均数那里,所以平均数会是0。
for(i=0;i<10;++i)
{
scanf(%lf,a[i]);
if(a[i]<0)
{
printf("Input ERROR");
continue;
}
else
{
//sunm计算和平均数计算。
}
}
(这些代码没在编辑器上写的,可能会有问题,只是大概写法)
你还有一个问题,就是SUM定义的是INT行的两边一除得到也是INT型的也就是说你的平均数是正整数,别以为你定义平均数是FLOAT就会得到FLOAT值,你要是得到精确的值,那么最好把所有分数都定义为FLOAT。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-12-07
展开全部
你的程序一堆问题,最终统计结果有很多错误

aver = 0是因为你在 if(a[i] > 0)的地方就break了,根本没执行后面的计算平均

再有一个问题,计算平均的那个循环是一个死循环,计算平均的公式也有问题

还有,每个for循环你都是用的i,根本没考虑i值的变化
追问
能帮我改正下吗?
追答
#include 
void main()
{
int a[10], no = 0,ok = 0, i, max = 0, min = 0, sum = 0, b = 0;
float aver=0;
printf("输入十个成绩\n");
for(i=0;i0)
break;
else
printf("必须大于0\n");
}

sum = sum + a[i];

if(a[i] max)
max = a[i];

if(a[i] < min)
min = a[i];
}

printf("最大数为%d\n最小数为%d\n平均数为%f\n", max, min, aver);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一变班爱麻啊堡0J
高粉答主

2020-01-13 · 醉心答题,欢迎关注
知道答主
回答量:11.4万
采纳率:2%
帮助的人:6079万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式