一个C语言问题(输入几组成绩,用负数结束,求平均分和不及格人数)

输入成绩,用负数结束,求平均分和不及格人数
如下所示:
输入:2 80 50 80 -1 90 85 75 45 55 -2 (2为组数,-1,-2是每组的结束标志)
输出:第一组的平均成绩为70不及格1人
第二组的平均成绩为70,不及格2人

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 9
void main()
{
int repeat,i=0;
float a[N];
float y;
int x=0;
scanf("%d",&repeat);

float *sum=(float *)malloc(sizeof(float)*repeat);

float *ave=(float *)malloc(sizeof(float)*repeat);

int *count=(int *)malloc(sizeof(int)*repeat);
for(i=0;i<repeat;i++)
{
ave[i]=0;
sum[i]=0;
count[i]=0;
}

while(x<repeat)
{ int m=0;
for(scanf("%f",&y);y>0;scanf("%f",&y)) a[m++]=y;

for(int j=0;j<m;j++)
printf("$%.2f\n",a[j]);

for(j=0;j<m;j++)
sum[x]+=a[j];
ave[x]=sum[x]/m;

for( j=0;j<m;j++)
{ if(a[j]<60.0) count[x]++;
}
x++;
}
for(int k=0;k<x;k++)
printf("第[%d]组学生平均成绩=%.2f,不及格人数=%d人\n",k,ave[k],count[k]);

}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-24
#include "stdio.h"
main()
{ int i,j,repeat,a[10],n=0,m;
float sum=0,aver;
printf("enter the repeat number ");
scanf("%d",&repeat); /*循环次数*/
for(i=1;i<=repeat;i++)
{ printf("enter the number and grade :\n");
scanf("%d",&m); /* 这是你要输入数的个数*/
for(j=0;j<10;j++)
scanf("%d",&a[j]); /*输入十个数 不是的话 补0即可*/
for(j=0;j<10;j++)
{ if(a[j]<0) break;
else sum=sum+a[j];
if(a[j]<=59) n=n+1;
}
aver=sum/m;
printf("Grade average is %.2f,",aver);
printf("the number of fail is %d\n",(n+m-9)); }
getch();}
这个是一个循环 你想输入的循环次数即为组数
还有要一次输入十个数 最后一个为负数
如果不是十个数 把其余数补0即可 不会影响不及格人数