输入某班学生某门课的成绩(最多不超过40人),
当输入为负值时,表示输入结束,
用函数编程统计成绩不低于平均分的学生人数。
要求:
(1)按如下函数原型进行编程:
int GetAboveAver(int score[], int n);
(2)在主函数中:
输入学生成绩,
然后调用函数GetAboveAver计算成绩不低于平均分的学生人数,
最后输出该人数。
要求:
(1)学生成绩和平均分均定义为int类型
(2)**无输入提示信息
**输入格式为:"%d"
**输出格式为:"Students of above average is %d\n"
#include <stdio.h>
void main( )
{
int str[40];
int i = -1, aver = 0, a, b = 0, c = 0;
do
{
i++;
scanf("%d", str[i]);
}
while (str[i] > 0);
for (a = 0; a < i; a++)
aver += str[a];
aver = aver / (i-1);
while (b < i)
{
if (str[b] >= aver)
c++;
b++;
}
printf("Students of above average is %d\n", c);
}
#include <stdio.h>
void main()
{
int score[40];/数组最大容量/
int i,j=0,k=0,sum,aver;
for(i=0;i<40;i++)
{
scanf("%d",&score[i]);/*此处你没有取地址符'&',所以输入无效 */
if(score[i]>0)
{
j=j+1;/统计输入有效成绩的数量/
continue;
}
if(score[i]<0)/*你给出例题里说输入负数结束*/
{
break;
}
}
for(i=0;i<j;i++)/*计算总分数*/
{
sum=sum+score[i];
}
aver=sum/j;/*求平均成绩*/
for(i=0;i<j;i++)
{
if(score[i]>aver)/没必要那么多数组变量,一个就够了/
{
k=k+1;
}
}
printf("Students of above average is %d\n", k);
}
for (a = 0; a < i; a++)
aver += str[a];
aver = aver / (i-1);(此处应为i+1)
首先一开始i=0;第一步i-1=-1
然后是计算变量不对,和是和,平均数是平均数,如下
1+2=3 3/2=1.5
1.5+3=4.5 4.5/3=1.5
然而1+2+3=6 6/3=2
修改如下,供参考:
#include <stdio.h>
void main()
{
int str[40];
int i = -1, aver = 0, a, b = 0, c = 0;
do
{
i++;
scanf("%d", &str[i]);
} while (str[i] > 0);
for (a = 0; a < i; a++)
aver += str[a];
aver = aver / i; //aver = aver / (i - 1);
while (b < i)
{
if (str[b] >= aver)
c++;
b++;
}
printf("Students of above average is %d\n", c);
}