求助
用c语言编写
2. 输入10个学生5门课的成绩,分别用函数实现下列功能
(1)计算每个学生的平均分;
(2)计算每门课的平均分;
(3)找出所有50个分数中的最高的分数所对应的学生和课程;
思路:因有多个学生的多个课程,在进行存放的时候可以采用多维数组;计算之前要先赋值,可自定义函数实现赋值。(1)要计算每名学生的平均分,按行计算,(2)计算每门课的平均分,按列计算,要考虑列应该在外层循环;(3)第三步可用选择法,依次比较,并记下学号和课程号。
注意因行号、列号、及数组会有多个函数使用,因此可使用全局数组、全局变量。
首先,我们可以使用一个二维数组来存储学生的成绩。数组的行表示学生,列表示科目。下面是一个简单的示例代码:
#include <stdio.h>
#define STUDENT_COUNT 10
#define SUBJECT_COUNT 5
int scores;
// 输入学生成绩
void inputScores() {
printf("请输入学生成绩:\n");
for (int i = 0; i < STUDENT_COUNT; i++) {
printf("请输入第%d个学生的%d门课成绩:\n", i + 1, SUBJECT_COUNT);
for (int j = 0; j < SUBJECT_COUNT; j++) {
scanf("%d", &scores);
}
}
}
// 计算每个学生的平均分
void calcStudentAverage() {
for (int i = 0; i < STUDENT_COUNT; i++) {
int sum = 0;
for (int j = 0; j < SUBJECT_COUNT; j++) {
sum += scores;
}
printf("第%d个学生的平均分为:%f\n", i + 1, (float)sum / SUBJECT_COUNT);
}
}
// 计算每门课的平均分
void calcSubjectAverage() {
for (int j = 0; j < SUBJECT_COUNT; j++) {
int sum = 0;
for (int i = 0; i < STUDENT_COUNT; i++) {
sum += scores;
}
printf("第%d门课的平均分为:%f\n", j + 1, (float)sum / STUDENT_COUNT);
}
}
// 找出最高分数所对应的学生和课程
void findHighestScore() {
int maxScore = scores;
int maxStudent = 0;
int maxSubject = 0;
for (int i = 0; i < STUDENT_COUNT; i++) {
for (int j = 0; j < SUBJECT_COUNT; j++) {
if (scores > maxScore) {
maxScore = scores;
maxStudent = i;
maxSubject = j;
}
}
}
printf("最高分数为:%d,对应的学生为:%d,对应的课程为:%d\n", maxScore, maxStudent + 1, maxSubject + 1);
}
int main() {
inputScores();
calcStudentAverage();
calcSubjectAverage();
findHighestScore();
return 0;
}
这个例子使用了全局的二维数组`scores`来存储学生成绩。在`inputScores`函数中,我们使用嵌套循环逐一输入学生的成绩。在`calcStudentAverage`函数中,我们按行计算每个学生的平均分,并输出结果。在`calcSubjectAverage`函数中,我们按列计算每门课的平均分,并输出结果。在`findHighestScore`函数中,我们使用选择法找到最高分数所对应的学生和课程,并输出结果。
希望这个示例代码能帮助你理解如何用C语言实现你的需求。如果还有其他问题,请随时提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 我也刚学c,你这个题目,输入的话 是要输入学生的名字吗,还是只要输入他们的成绩就行 -kasha 发表于 2023-12-13 16:55
我也刚学c,你这个题目,输入的话 是要输入学生的名字吗,还是只要输入他们的成绩就行
输成绩就行,不用名字
页:
[1]