输入某班级学生某门课的成绩(最多不超过40人),具体人数由用户键盘输入,用函数程序统计不合格人数。用C语言解决上述问题
时间: 2025-02-23 08:32:16 浏览: 47
在C语言中,你可以创建一个函数来处理这个问题。首先,我们需要定义一个结构体来存储学生的姓名和成绩,然后编写一个函数来接收学生数据、计算并返回不合格的人数。下面是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 定义学生信息结构
typedef struct {
char name[50];
int score;
} Student;
// 函数声明,接受学生数组和长度,返回不合格人数
int count_unqualified_students(Student* students, int num_students);
int main() {
int num_students;
// 提示用户输入学生人数
printf("请输入学生人数(最多40人): ");
scanf("%d", &num_students);
// 检查输入是否合理
if (num_students > 40) {
printf("超过限制,无法输入过多学生。\n");
return 0;
}
// 动态分配内存存储学生信息
Student* student_array = malloc(num_students * sizeof(Student));
if (!student_array) {
printf("内存分配失败\n");
return 0;
}
// 用户输入学生信息
for (int i = 0; i < num_students; ++i) {
printf("请输入第 %d 位学生的姓名和成绩(用空格分隔): ", i + 1);
scanf("%s %d", student_array[i].name, &student_array[i].score);
}
// 调用函数计算不合格人数
int unqualified_count = count_unqualified_students(student_array, num_students);
printf("不合格的学生有 %d 位。\n", unqualified_count);
// 释放内存
free(student_array);
return 0;
}
// 计算不合格人数的函数
int count_unqualified_students(Student* students, int num_students) {
int unqualified_count = 0;
for (int i = 0; i < num_students; ++i) {
if (students[i].score < 60) { // 假设及格线为60分
unqualified_count++;
}
}
return unqualified_count;
}
```
在这个例子中,`count_unqualified_students`函数遍历学生数组,如果发现某个学生的分数小于60(可以根据实际情况调整及格线),则计数器加一。记得在主程序结束时释放动态分配的内存。
阅读全文