有5个学生,每个学生的数据包括:学号(字符数组型)、姓名(字符数组型)、c语言成绩(整型),编写程序先从键盘上输入学生们的数据,再输入一个学生的学号,要求输出该学号对应的学生信息,未找到该学生时输出n
时间: 2023-05-31 18:19:49 浏览: 161
编制一个程序,要求输入5个学生的学号、2门课的成绩,然后输出每个学生的学号、2门课成绩、平均成绩。
3星 · 编辑精心推荐
### 回答1:
以下是Python代码实现:
students = [] # 存储学生信息的列表
# 从键盘输入学生信息
for i in range(5):
stu_id = input("请输入学生学号:")
name = input("请输入学生姓名:")
score = int(input("请输入学生C语言成绩:"))
student = {'id': stu_id, 'name': name, 'score': score}
students.append(student)
# 从键盘输入要查询的学生学号
search_id = input("请输入要查询的学生学号:")
# 遍历学生列表,查找对应学号的学生信息
found = False # 标记是否找到对应学号的学生
for student in students:
if student['id'] == search_id:
print("学号:{},姓名:{},C语言成绩:{}".format(student['id'], student['name'], student['score']))
found = True
break
if not found:
print("n") # 未找到对应学号的学生,输出n
### 回答2:
这道题是一道比较典型的数据结构题目,需要用到结构体和循环语句来实现。首先需要定义一个学生结构体,包括学号、姓名和成绩三个属性,具体如下:
```
struct student {
char id[10];
char name[20];
int score;
};
```
接下来,定义一个包含5个学生的结构体数组,并使用循环语句从键盘上输入每个学生的信息,具体代码如下:
```
struct student stu[5];
int i;
for(i = 0; i < 5; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%s", stu[i].id);
printf("姓名:");
scanf("%s", stu[i].name);
printf("成绩:");
scanf("%d", &stu[i].score);
}
```
接下来,再从键盘上输入一个学生的学号,使用循环依次遍历结构体数组,查找该学号对应的学生信息,具体代码如下:
```
char id[10];
int flag = 0;
printf("请输入学生的学号:");
scanf("%s", id);
for(i = 0; i < 5; i++) {
if(strcmp(stu[i].id, id) == 0) {
printf("学号:%s 姓名:%s 成绩:%d\n", stu[i].id, stu[i].name, stu[i].score);
flag = 1;
break;
}
}
if(flag == 0) {
printf("n");
}
```
在上述代码中,使用strcmp()函数进行字符串比较,如果学号相同,输出该学生的信息并将flag变量置为1,表示已经找到该学生信息;如果遍历完整个结构体数组依然没有找到该学生,输出n。最后的结果就是输入一个学生的学号,输出该学生的姓名和成绩,如果没有该学生则输出n。
### 回答3:
题目要求我们编写一段程序,实现以下功能:
1. 从键盘上输入5个学生的数据,每个学生的数据包括学号、姓名和c语言成绩;
2. 从键盘上输入一个学生的学号;
3. 输出与该学生学号对应的学生信息,如果未找到该学生则输出n。
为了实现这个功能,我们可以首先定义一个结构体`Student`,包括学号、姓名和c语言成绩三个字段:
```c
typedef struct student {
char id[20];
char name[20];
int score;
} Student;
```
接着,我们使用一个数组`students`来存储这5个学生的信息,定义一个函数`input_data`从键盘上输入这几个学生的信息:
```c
void input_data(Student students[]) {
for (int i = 0; i < 5; i++) {
scanf("%s %s %d", students[i].id, students[i].name, &students[i].score);
}
}
```
为了实现第二个功能,我们需要定义一个函数`find_student`,它接受一个学生学号的参数,遍历`students`数组,找到与该学号对应的学生,返回其在数组中的下标:
```c
int find_student(char id[], Student students[]) {
for (int i = 0; i < 5; i++) {
if (strcmp(id, students[i].id) == 0) {
return i;
}
}
return -1;
}
```
如果未找到对应学生,`find_student`函数返回-1。最后,我们在主函数中调用`input_data`和`find_student`函数,实现整个程序的功能:
```c
int main() {
Student students[5];
input_data(students);
char id[20];
scanf("%s", id);
int index = find_student(id, students);
if (index == -1) {
printf("n\n");
} else {
printf("%s %s %d\n", students[index].id, students[index].name, students[index].score);
}
return 0;
}
```
完整代码如下:
阅读全文