题目
解决代码及点评
/*
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)拷贝代码与运行
程序运行结果