用c语言编译从键盘随机输入5个学生的数学、英语、语文、历史成绩,要求做以下操作: (1)、求出每个学生的平均成绩; (2)、求出每门课的平均成绩;
时间: 2023-05-25 07:01:13 浏览: 84
编制一个程序,要求输入5个学生的学号、2门课的成绩,然后输出每个学生的学号、2门课成绩、平均成绩。
3星 · 编辑精心推荐
好的,我将扮演 CSDN 开发的 C 知道,按照您的要求回答问题。
为了实现您的要求,我们需要进行以下步骤:
1. 首先,您需要在 C 语言中声明一个数组来储存每个学生的成绩,每个学生可以用一个结构体来储存。
2. 然后,使用 scanf 函数从键盘输入每个学生的数学、英语、语文和历史成绩,储存在结构体中。
3. 遍历结构体数组,计算每个学生的平均成绩,使用简单的数学公式 sum/n,其中 sum 是学生的所有成绩之和,n 是学生的科目数。
4. 同样地,计算每门课的平均成绩,首先需要遍历结构体数组,将每门科目的成绩相加,然后除以学生数即可。
下面是代码示例:
```c
#include<stdio.h>
struct student { // 定义一个结构体来储存每个学生的成绩
float math;
float english;
float chinese;
float history;
};
int main() {
int n = 5; // 假设输入 5 个学生的成绩
struct student stu[n]; // 定义结构体数组储存每个学生的成绩
float sum_math = 0, sum_english = 0, sum_chinese = 0, sum_history = 0; // 初始化每门课程的总分数
for (int i = 0; i < n; i++) { // 循环输入每个学生的成绩
printf("请输入第%d个学生的数学、英语、语文和历史成绩,用空格分隔:\n", i+1);
scanf("%f %f %f %f", &stu[i].math, &stu[i].english, &stu[i].chinese, &stu[i].history);
// 每门课程的总分数需要在循环中累加
sum_math += stu[i].math;
sum_english += stu[i].english;
sum_chinese += stu[i].chinese;
sum_history += stu[i].history;
}
printf("每个学生的平均成绩为:\n");
for (int i = 0; i < n; i++) {
float avg = (stu[i].math + stu[i].english + stu[i].chinese + stu[i].history) / 4; // 计算平均分
printf("第%d个学生的平均成绩为:%.2f\n", i+1, avg); // 输出平均分
}
float avg_math = sum_math / n; // 计算数学平均分
float avg_english = sum_english / n; // 计算英语平均分
float avg_chinese = sum_chinese / n; // 计算语文平均分
float avg_history = sum_history / n; // 计算历史平均分
printf("每门课程的平均成绩为:\n");
printf("数学:%.2f\n", avg_math); // 输出数学平均分
printf("英语:%.2f\n", avg_english); // 输出英语平均分
printf("语文:%.2f\n", avg_chinese); // 输出语文平均分
printf("历史:%.2f\n", avg_history); // 输出历史平均分
return 0;
}
```
这样,我们就可以用 C 语言编写程序,实现从键盘随机输入 5 个学生的成绩,并求出每个学生的平均成绩和每门课的平均成绩。
阅读全文