
题目
解决代码及点评
/* 6. 有10个学生,每个学生的数据包括学号、姓名、三门课的成绩, 从键盘输入10个学生数据,要求打印出三门课总平均成绩, 以及最高分的学生的数据(包括学号、 姓名、三门课成绩、平均分数)。 */ typedef struct Student { char num[20]; char name[30]; float chinese; float math; float english; }STU; #include <stdio.h> #include <stdlib.h> void main() { const int N = 10; STU *p; STU stu[N]; p = stu; float avg;//每个学生的平均成绩 float totalAvg = 0.0f;//总平均成绩 float max = 0.0f;//保存平均值最大值 float avgArr[N];//保存平均成绩的数组 int index;//保存平均成绩最大值的角标 for (int i = 0; i < N;i++) // 获取学生的详细信息 { gets_s((p + i)->num); gets_s((p + i)->name); scanf_s("%f%f%f",&((p + i)->chinese),&((p + i)->math),&((p + i)->english)); avg = ((p + i)->chinese + (p + i)->math + (p + i)->english) / 3; avgArr[i] = avg; } for (int i = 0; i < N;i++) // 计算总成绩,获得最好成绩学生的下标 { if (avgArr[i] > max) { index = i; } totalAvg += avgArr[i]; } printf("totalAvg = %f\n",totalAvg / N); // 打印平均成绩 puts((p + index)->num); puts((p + index)->name); printf("chinese = %f\nmath = %f\nenglish = %f\navg = %f\n", (p + index)->chinese,(p + index)->math,(p + index)->english,avgArr[index]); system("pause"); }
代码编译以及运行
由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:
1)新建工程
2)选择工程
3)创建完工程如下图:
4)增加文件,右键点击项目
5)在弹出菜单里做以下选择
6)添加文件
7)拷贝代码与运行
程序运行结果