返回:贺老师课程教学链接
【项目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; }