一个班有N名学生,每个学生修了五门课。 1)求每个学生的平均成绩,并输出每个学生的学号,每门课程的成绩及平均值。 2)求某门课程的平均分; 1、分别编写2个函数实现以上2个要求。 2、第1个函数用数组名作参数。第2个函数用指针作参数,并在函数体内用指针对数组操作。 输入 第一行:输入N,代表N名学生 下面N行,每行有6个数据分别为:学号,英语成绩,数学成绩,C++成绩,音乐成绩,美术成绩 输出 首先输出N行 每行为学生学号,每门成绩和平均成绩(平均成绩保留一位小数) 最后按顺序输出每门平均成绩(平均成绩保留一位小数)
时间: 2024-01-01 10:06:40 浏览: 25
好的,下面是一个 C 语言程序,使用了数组名和指针分别实现了以上两个要求,并且可以按照输入顺序输出学生信息和课程平均成绩:
```c
#include <stdio.h>
#define MAX_STUDENT 50
#define COURSE_NUM 5
void print_student_info(int scores[][COURSE_NUM], int n) {
int i, j;
float avg;
printf("学号\t英语\t数学\tC++\t音乐\t美术\t平均分\n");
for (i = 0; i < n; i++) {
printf("%d\t", scores[i][0]);
avg = 0;
for (j = 1; j <= COURSE_NUM; j++) {
printf("%d\t", scores[i][j]);
avg += scores[i][j];
}
avg /= COURSE_NUM;
printf("%.1f\n", avg);
}
}
void print_course_avg(int (*scores)[COURSE_NUM], int n, float course_avg[]) {
int i, j;
for (j = 1; j <= COURSE_NUM; j++) {
float avg = 0;
for (i = 0; i < n; i++) {
avg += scores[i][j];
}
avg /= n;
course_avg[j] = avg;
}
printf("各门课程平均分为:");
for (j = 1; j <= COURSE_NUM; j++) {
printf("%.1f ", course_avg[j]);
}
printf("\n");
}
int main() {
int scores[MAX_STUDENT][COURSE_NUM + 1];
float course_avg[COURSE_NUM + 1] = {0};
int n, i, j;
// 输入学生成绩
printf("请输入学生的成绩:\n");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("请输入第 %d 个学生的成绩:\n", i + 1);
for (j = 0; j <= COURSE_NUM; j++) {
scanf("%d", &scores[i][j]);
}
}
// 输出每个学生的平均成绩及课程成绩
printf("每个学生的平均成绩及课程成绩如下:\n");
print_student_info(scores, n);
// 输出每门课程的平均分
print_course_avg(scores, n, course_avg);
return 0;
}
```
该程序中,`print_student_info` 函数用于输出每个学生的平均成绩及课程成绩,它使用了数组名作为参数。`print_course_avg` 函数用于输出每门课程的平均分,它使用了指针作为参数,并在函数体内用指针对数组进行操作。在 `main` 函数中,先输入学生成绩,然后分别调用这两个函数输出结果。同时,定义了一个数组 `course_avg` 用于存储各门课程的平均分。最后在输出每门课程平均分时,使用了这个数组。