//根据上题,定义一个函数实现每科的平均分并输出,再定义一个函数求出总分最高分的学生并输出该生信息
typedef struct Student
{
int num;//学号
char name[20];//姓名
double score[3];//三科成绩
}; Student;
//键盘读入函数
void Input(Student* arr, int len)
{
printf("请输入%d个学生信息:学号 姓名 成绩1 成绩2 成绩3\n", len);
//printf("学号 姓名 成绩1 成绩2 成绩3\n");
for (int i = 0; i < len; i++)//i个学生
{
scanf("%d%s%lf%lf%lf", &arr[i].num, &arr[i].name,
&arr[i].score[0], &arr[i].score[1], &arr[i].score[2]);
//for (int j = 0; j < 3; j++)//j科成绩
//{
// scanf("%lf", &arr[i].score[j]);
//}
}
}
//输出函数
void Show(const Student* arr, int len)
{
printf("所有学生的信息分别为:\n");//不能放到循环里面
for (int i = 0; i < len; i++)
{
printf("学号:%d,姓名:%s,成绩1:%lf,成绩2:%lf,成绩3:%lf\n",
arr[i].num, arr[i].name,
arr[i].score[0], arr[i].score[1], arr[i].score[2]);
}
}
//处理平均成绩和最高分
void AvgScore(const Student* arr, int len)
{
//平均成绩
double sum1 = 0, sum2 = 0, sum3 = 0;//分别定义3科成绩的总分数
for (int i = 0; i < len; i++)
{
sum1 += arr[i].score[0];
sum2+= arr[i].score[1];
sum3 += arr[i].score[2];
}
printf("科1的平均成绩为:%lf\n", sum1 / len);
printf("科2的平均成绩为:%lf\n", sum2 / len);
printf("科3的平均成绩为:%lf\n", sum3 / len);
}
void MaxScore(const Student* arr, int len)
{
//找最高分
double max = 0;//最高分学生的成绩
int j = 0;//最高分学生的下标
double tmp = 0;//当前学生的总成绩
for (int i = 0; i < len; i++)
{
tmp = arr[i].score[0] + arr[i].score[1] + arr[i].score[2];
if (tmp > max)
{
max = tmp;//当前分数赋值给最高分
j = i;//当前人的下标给最高分下标,则arr[j]就是最高分的人
}
}
printf("最高分的学生信息为:学号:%d,姓名:%s,成绩1:%lf,成绩2:%lf,成绩3:%lf,总成绩:%lf\n",
arr[j].num, arr[j].name,
arr[j].score[0], arr[j].score[1], arr[j].score[2], max);
}
int main()
{
Student arr[2];
Input(arr, sizeof(arr) / sizeof(arr[0]));
printf("-----------------------------\n");
Show(arr, sizeof(arr) / sizeof(arr[0]));
printf("-----------------------------\n");
AvgScore(arr, sizeof(arr) / sizeof(arr[0]));
printf("-----------------------------\n");
MaxScore(arr, sizeof(arr) / sizeof(arr[0]));
return 0;
}
定义一个学生结构体,包含学号,姓名和三科成绩。定义一个函数实现每科的平均分并输出,再定义一个函数求出总分最高分的学生并输出该生信息。
最新推荐文章于 2024-08-27 17:18:01 发布