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是指向返回的不及格学生学号的数组的指针。
时间: 2024-03-10 22:51:28 浏览: 208
Student_achievement_management_system.rar_C语言_matlab课程设计_学生成绩 统计
5星 · 资源好评率100%
好的,这是一个关于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门以上不及格的学生的学号信息。
希望这个程序能够帮到你!
阅读全文