c语言 输入10名学生成绩,将所有高于平均分的学生成绩及其下标输出

#include <stdio.h>
#define N 10
void main()
{
int i,s[N];
float ave = 0;
for(i=0;i<N;i++)
scanf("%d",&s[i]);
for(i=0;i<N;i++)
ave/=N;
printf("Average score:%5.1f\n",ave);
printf("NO.---score\n");
for(i=0;i<N;i++)
if(s[i]>ave)
printf("%3d---%d\n",i,s[i]);
}
其中
for(i=0;i<N;i++)
scanf("%d",&s[i]);
for(i=0;i<N;i++)
ave/=N;
是什么意思 求解

#include<stdio.h>
#define N 10 //宏定义 N的值为10 下面用到的N值都默认为10
void main()
{
int i,s[N],sum;
float ave=0.0;
for(i=0;i<N;i++)
{
scanf("%d",&s[i]);//给数组赋值,比如说输入1 2 3,那么s[0]=1,s[1]=2,s[2]=3
}
for(i=0;i<N;i++)
{
sum+=s[i];//求出十个人的成绩总和;
}
ave=sum*1.0/N;//注意sum*1.0,因为sum为整型,要想除以一个数保留小数必须乘以1.0
printf("Average score:%.1f\n",ave);//输出平均值,保留到小数点后一位
printf("NO.---score\n");//打印出引号内的英文
for(i=0;i<N;i++)
if(s[i]>ave)//如果s[i]的值即这位同学的成绩大于平均数
printf("%3d---%d\n",i,s[i]);//输出s[i]的i,i即为下标%3d的意思是输出的值右对齐,而且无论输出值为多少,都占三位
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-13
这段程序有问题哦!
其中这段改为
for(i=0;i<N;i++)
scanf("%d",&s[i]);
for(i=0;i<N;i++)
{ave+=s[i];}
ave /= N;

先求数据总和,求平均值。
第2个回答  2013-03-13
ave/=N;求平均成绩是错误的,应该是
ave+=1.0*s[i]/N;