从键盘输入某班学生学号和某门课程的成绩(班级人数最多不超过50),试编程从键盘任意输入一个学号,查找该学号学生的成绩。 如果找不到该学号,则输出Not found! 查找过程用自定义函数SearchbyNum实现。
时间: 2024-12-11 07:36:10 浏览: 23
这是一个简单的编程练习,通常使用控制台输入和数组、结构体等数据结构来完成。这里假设我们已经有一个二维数组或结构体来存储学生的信息,其中每一行代表一个学生,包括他们的学号和成绩。
首先,我们可以定义一个结构体 `Student` 来表示一个学生,例如:
```c
struct Student {
int id; // 学号
float score; // 成绩
};
```
接下来,我们需要编写一个函数 `CreateClass()` 用于初始化学生的数据,从键盘输入每个学生的学号和成绩,添加到学生数组中:
```c
void CreateClass(Student students[], int size) {
for (int i = 0; i < size; ++i) {
printf("请输入第%d位学生的学号: ", i + 1);
scanf("%d", &students[i].id);
printf("请输入第%d位学生的成绩: ", i + 1);
scanf("%f", &students[i].score);
}
}
```
现在可以定义 `SearchbyNum()` 函数,它接受一个学生数组和一个学号作为参数,遍历数组查找指定的学生:
```c
bool SearchbyNum(const Student students[], int size, int num, float* result) {
for (int i = 0; i < size; ++i) {
if (students[i].id == num) {
*result = students[i].score;
return true;
}
}
return false; // 找不到指定的学号
}
```
主函数中调用 `CreateClass()` 初始化学生数组,然后从键盘接收用户输入的学号,用 `SearchbyNum()` 函数查找成绩并处理结果:
```c
int main() {
const int MAX_SIZE = 50; // 班级最大人数
Student students[MAX_SIZE];
int inputNum;
float score;
CreateClass(students, MAX_SIZE);
printf("请输入要查找的学生学号: ");
scanf("%d", &inputNum);
if (SearchbyNum(students, MAX_SIZE, inputNum, &score)) {
printf("找到的成绩: %.2f\n", score);
} else {
printf("Not found!\n");
}
return 0;
}
```
这个程序会一直运行直到用户停止输入,或者达到班级最大人数限制。当用户输入一个不存在的学号时,程序将输出 "Not found!"。
阅读全文