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