2.学生成绩统计,某班有N(N<=30)个学生,共开设5门课程,按要求完成以下三个功能。 输入要求如下:第一行为一个整数N,表示本班共N个人,接下来的N行中每行包含一个学生的信息,包括学号、课程1成绩、课程2成绩、课程3成绩、课程4成绩、课程5成绩,要求成绩保存在成绩数组,学号保存在学号数组。 (1)实现函数foat AverCourse(int *pscore, int n, int m),求第m门课程的平均分,参数说明:pscore 是指向二维数组的列指针,参数m表示该函数需要计算第m门课程的均分,参数n表示学生的人数,该函数的返回值为第m门课程的均分,要求保留2位小数。 (2)实现函数 void FindNoPassStu(int (*pscore)[5], int *num, int n, int *nopassnum),实现找出有2门及2门以上不及格的学生的学号信息,pscore 是指向成绩二维数组的行指针,num 是指向学号数组的指针,nopassnum 是指向返回的不及格学生学号的数组的指针。 (3)实现函数void FindGoodStu(int *pscore, int*num, int n, int*goodnum),实现找出均分大于等于90分的学生的学号信息,pscore 是指向成绩二维数组的列指针,num是指向学号数组的指针,goodnum 是指向返回的均分90分以上的学号的数组的指针。 (4)该题需要自行设计菜单,让用户选择完成以上3个功能中的任意多个。
时间: 2024-04-04 08:32:45 浏览: 48
好的,这是一个关于学生成绩统计的问题,需要实现三个功能,分别是求第m门课程的平均分、找出有2门及2门以上不及格的学生的学号信息、找出均分大于等于90分的学生的学号信息。需要输入学生的信息,包括学号和五门课程的成绩。同时也需要设计菜单,让用户选择完成以上三个功能中的任意多个。我可以帮你解答这个问题,但是需要你提供更具体的问题和要求。
相关问题
C语言。学生成绩统计,某班有N(N<=30)个学生,共开设5门课程,按要求完成以下三个功能。输入要求如下:第一行为一个整数N,表示本班共N个人,接下来的N行中每行包含一个学生的信息,包括学号、课程1成绩、课程2成绩、课程3成绩、课程4成绩、课程5成绩,要求成绩保存在成绩数组,学号保存在学号数组。实现函数void FindNoPassStu(int (*pscore)[5],int * num,int n, int * nopassnum),实现找出有2门及2门以上不及格的学生的学号信息,pscore 是指向成绩二维数组的行指针,num是指向学号数组的指针,nopassnum是指向返回的不及格学生学号的数组的指针。
好的,这是一个关于C语言的问题,功能是实现学生成绩统计。具体要求如下:
1. 输入N个学生的信息,包括学号和5门课程成绩,保存在成绩数组和学号数组中。
2. 实现函数FindNoPassStu,找出有2门及2门以上不及格的学生的学号信息,将其保存在nopassnum数组中。
下面是代码实现:
```c
#include <stdio.h>
void FindNoPassStu(int (*pscore)[5], int *num, int n, int *nopassnum);
int main() {
int n;
printf("请输入学生人数:");
scanf("%d", &n);
int score[n][5];
int num[n];
int nopassnum[n];
printf("请输入学生信息:\n");
for (int i = 0; i < n; i++) {
printf("学生%d:\n", i + 1);
scanf("%d %d %d %d %d %d", &num[i], &score[i][0], &score[i][1], &score[i][2], &score[i][3], &score[i][4]);
}
FindNoPassStu(score, num, n, nopassnum);
printf("不及格学生的学号为:");
for (int i = 0; i < n; i++) {
if (nopassnum[i] != 0) {
printf("%d ", nopassnum[i]);
}
}
printf("\n");
return 0;
}
void FindNoPassStu(int (*pscore)[5], int *num, int n, int *nopassnum) {
int count;
for (int i = 0; i < n; i++) {
count = 0;
for (int j = 0; j < 5; j++) {
if (pscore[i][j] < 60) {
count++;
}
}
if (count >= 2) {
nopassnum[i] = num[i];
} else {
nopassnum[i] = 0;
}
}
}
```
在这个程序中,我们首先输入学生的信息,并将其保存在成绩数组和学号数组中。
然后,我们调用FindNoPassStu函数,该函数遍历所有学生的成绩,计算不及格的科目数。如果不及格科目数大于等于2,则将该学生的学号保存在nopassnum数组中,否则将其赋值为0。
最后,我们输出nopassnum数组中所有不为0的元素,即为有2门及2门以上不及格的学生的学号信息。
希望这个程序能够帮到你!
C语言优先使用指针,学生成绩统计,某班有N(N<=30)个学生,共开设5门课程,按要求完成以下三个功能。输入要求如下:第一行为一个整数N,表示本班共N个人,接下来的N行中每行包含一个学生的信息,包括学号、课程1成绩、课程2成绩、课程3成绩、课程4成绩、课程5成绩,要求成绩保存在成绩数组,学号保存在学号数组。 (1)实现函数float AverCourse(int *pscore,int n,int m),求第m门课程的平均分,参数说明:pscore 是指向二维数组的列指针,参数m 表示该函数需要计算第n门课程的均分,参数m表示学生的人数,该函数的返回值为第m门课程的均分,要求保留2位小数。
好的,我可以帮您解答这个问题。
首先,根据输入要求,我们需要定义两个数组:一个是存储学号的数组,一个是存储成绩的二维数组。我们可以使用以下代码进行定义:
```c
#define MAXN 30
#define MAXM 5
int score[MAXN][MAXM]; // 存储成绩的二维数组
int stu_num[MAXN]; // 存储学号的数组
```
接下来,我们需要编写一个函数 `AverCourse` 来求第 `m` 门课程的平均分。该函数的参数包括一个指向二维数组的列指针 `pscore`,参数 `n` 表示该函数需要计算第 `n` 门课程的均分,参数 `m` 表示学生的人数。该函数的返回值为第 `n` 门课程的均分,要求保留2位小数。
函数的实现如下:
```c
float AverCourse(int *pscore,int n,int m)
{
float sum = 0; // 用于存储成绩总和
for(int i = 0; i < m; i++) {
sum += *(pscore + i * MAXM + n - 1); // 求和
}
return sum / m; // 求平均分并返回
}
```
在这个函数中,我们首先定义了一个变量 `sum` 来存储成绩总和。接着,我们使用一个循环来遍历整个成绩数组,计算每个学生在第 `n` 门课程上的成绩,并将其加入到 `sum` 中。最后,我们将 `sum` 除以学生人数 `m`,求得第 `n` 门课程的平均分,并返回该值。
接下来,我们可以在主函数中调用 `AverCourse` 函数来计算每门课程的平均分。例如,要计算第2门课程的平均分,可以使用以下代码:
```c
float avg = AverCourse((int*)score, 2, n);
printf("第2门课程的平均分为:%.2f\n", avg);
```
在这个代码中,我们将 `score` 数组强制转换成一个 `int` 类型的指针,并将其作为参数传递给 `AverCourse` 函数。参数 `2` 表示我们需要计算第2门课程的平均分,参数 `n` 表示学生人数。最后,我们打印出计算结果。
完整的代码如下: