C语言请编写一个函数inputData,从键盘输入10名学生的学号(长度为10的字符串,例如2019010001)和成绩(浮点数,例如85.50),分别存储于数组nos和scores中,然后再编写一个函数findData实现给定一个学号,从nos中找到其所在位置并输出其学号和相应的成绩信息。要求在main函数中先后对inputData和findData函数进行调用以验证其正确性。最后再编写一个函数findstu实现给定成绩,找到对应学生的学号,并输出其学号和相应的成绩信息
时间: 2024-02-13 14:05:17 浏览: 79
以下是 C 语言代码实现:
```c
#include <stdio.h>
#include <string.h>
void inputData(char nos[][11], float scores[]);
void findData(char nos[][11], float scores[]);
void findstu(char nos[][11], float scores[]);
int main() {
char nos[10][11];
float scores[10];
// 输入学号和成绩信息
inputData(nos, scores);
// 查找学号对应的成绩信息
findData(nos, scores);
// 查找成绩对应的学号信息
findstu(nos, scores);
return 0;
}
void inputData(char nos[][11], float scores[]) {
printf("请输入10名学生的学号和成绩:\n");
for (int i = 0; i < 10; i++) {
printf("请输入第%d名学生的学号:", i + 1);
scanf("%s", nos[i]);
printf("请输入第%d名学生的成绩:", i + 1);
scanf("%f", &scores[i]);
}
}
void findData(char nos[][11], float scores[]) {
char search_no[11];
int position = -1;
printf("\n请输入要查找的学生学号:");
scanf("%s", search_no);
// 在学号数组中查找对应学号的位置
for (int i = 0; i < 10; i++) {
if (strcmp(nos[i], search_no) == 0) {
position = i;
break;
}
}
// 输出查找结果
if (position != -1) {
printf("学生学号:%s\n", nos[position]);
printf("学生成绩:%.2f\n", scores[position]);
} else {
printf("未找到该学生信息!\n");
}
}
void findstu(char nos[][11], float scores[]) {
float search_score;
int found = 0;
printf("\n请输入要查找的成绩:");
scanf("%f", &search_score);
// 在成绩数组中查找对应成绩的学号
for (int i = 0; i < 10; i++) {
if (scores[i] == search_score) {
printf("学生学号:%s\n", nos[i]);
printf("学生成绩:%.2f\n", scores[i]);
found = 1;
}
}
// 输出查找结果
if (!found) {
printf("未找到该成绩对应的学生信息!\n");
}
}
```
在 main 函数中,先调用 inputData 函数输入学号和成绩信息,再调用 findData 函数查找学号对应的成绩信息,最后调用 findstu 函数查找成绩对应的学号信息。
inputData 函数中利用二维字符数组存储学号信息,利用一维浮点数数组存储成绩信息。通过 for 循环依次输入 10 名学生的学号和成绩信息。
findData 函数中先输入要查找的学生学号,然后利用 for 循环在学号数组中查找对应学号的位置。如果找到了对应的位置,则输出该学号对应的成绩信息;否则提示未找到该学生信息。
findstu 函数中先输入要查找的成绩,然后利用 for 循环在成绩数组中查找对应成绩的学号。如果找到了对应的学号,则输出该学号对应的成绩信息;否则提示未找到该成绩对应的学生信息。
阅读全文