C语言分别用函数和数组实现,输入10个学生5门课的成绩并完成如下功能: (1)求每个学生的平均分。 (2)求每门课程的平均分。(3)找出最高分数所对应的学生(学号)和课程。 (4)分别统计5门课程都高于90分的学生
时间: 2024-01-30 19:03:15 浏览: 106
好的,我明白了。这是一个比较典型的C语言数组和函数应用的问题,我可以给您提供一个基本的解决方案。
首先,您可以定义一个二维数组来存储学生的成绩,其中第一维代表学生,第二维代表课程。例如:
```c
int scores[10][5];
```
然后,您需要编写一些函数来完成各种功能。
1. 求每个学生的平均分
您可以编写一个函数来计算每个学生的平均分,函数的输入参数为一个学生的成绩数组,输出参数为该学生的平均分。例如:
```c
float calc_avg_student(int *score) {
float sum = 0.0;
for (int i = 0; i < 5; i++) {
sum += score[i];
}
return sum / 5.0;
}
```
2. 求每门课程的平均分
类似地,您可以编写一个函数来计算每门课程的平均分,函数的输入参数为一个课程的成绩数组,输出参数为该课程的平均分。例如:
```c
float calc_avg_course(int (*scores)[5], int course) {
float sum = 0.0;
for (int i = 0; i < 10; i++) {
sum += scores[i][course];
}
return sum / 10.0;
}
```
3. 找出最高分数所对应的学生和课程
您可以编写一个函数来找出最高分数所对应的学生和课程,函数的输入参数为学生的成绩数组,输出参数为最高分数所对应的学生和课程。例如:
```c
void find_highest(int (*scores)[5], int *student, int *course) {
int max_score = 0;
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
if (scores[i][j] > max_score) {
max_score = scores[i][j];
*student = i;
*course = j;
}
}
}
}
```
4. 分别统计5门课程都高于90分的学生
最后,您可以编写一个函数来统计每个学生是否都高于90分,函数的输入参数为一个学生的成绩数组,输出参数为该学生是否都高于90分。例如:
```c
int count_high_scores(int *score) {
int count = 0;
for (int i = 0; i < 5; i++) {
if (score[i] > 90) {
count++;
}
}
return count == 5;
}
```
结合以上的函数,您可以编写一个主函数来完成整个程序的功能,例如:
```c
int main() {
int scores[10][5];
// 省略输入成绩的代码
float avg_student[10];
float avg_course[5];
int highest_student, highest_course;
for (int i = 0; i < 10; i++) {
avg_student[i] = calc_avg_student(scores[i]);
}
for (int i = 0; i < 5; i++) {
avg_course[i] = calc_avg_course(scores, i);
}
find_highest(scores, &highest_student, &highest_course);
int count = 0;
for (int i = 0; i < 10; i++) {
if (count_high_scores(scores[i])) {
count++;
}
}
return 0;
}
```
以上代码仅供参考,您可以根据具体需求进行修改和完善。
阅读全文