2017-04-30
输入学生成绩,输出高于平均成绩的学生序号和成绩。
其中学生人数不定,可能10个,可能1000。在录入成绩之前,学生人数由键盘输入。
由于要先求出平均成绩,然后才能确定输出哪些学生的信息,所以需要一个数组先将学生信息保存下来。考虑学生人数不定,用动态数组是个更适合的方案
//项目1-学生人数没个准
#include <stdio.h>
#include <malloc.h> //m?????.h
void main()
{
int number, i; //学生人数
int *score=NULL; //动态数组的首地址
int sum=0,ave; //成绩和、均分
//输入学生人数,为动态数组score分配合适大小的空间
printf("输入学生人数:");
scanf("%d", &number);
score = (int *)malloc(number * sizeof(int));
//读入学生成绩,并求出成绩和
for(i=0; i<number; i++)
{
printf("学生%d 的成绩:", i);
scanf("%d", &score[i]);
sum+=score[i];
}
//求平均成绩
ave = 1.0*sum/number;
printf("平均分为:%d\n", ave);
//输出高于平均分的学生的学号(即序号)和成绩
printf("高于平均分的学生成绩:\n");
for(i=0; i<number; i++)
{
if(score[i] > ave)
printf("学生%d 成绩: %d\n", i, score[i]);
}
//释放动态分配的空间
free(score);
}