编写一个c语言程序,定义一个表示学生的结构体,包含学生的姓名、年龄和成绩。用户输入至少五位学生的信息,每位学生的信息在一行中。倒数第二行输入END,表示输入数据结束。最后一行输入要查询的学生名字,程序输出该位学生的具体信息
时间: 2024-10-06 18:06:00 浏览: 48
在 C 语言中,你可以编写如下的程序来满足这个需求:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
struct Student {
char name[50];
int age;
float score;
};
int main() {
struct Student students[5]; // 学生数组,最多容纳5个学生
int i = 0;
while (i < 5) { // 循环读取直到遇到 'END'
printf("请输入第 %d 位学生的姓名、年龄和成绩(以空格隔开),或输入 'END' 结束输入:", i + 1);
fgets(students[i].name, sizeof(students[i].name), stdin); // 读取姓名
students[i].age = atoi(students[i].name); // 假设姓名后紧跟着年龄,转换为整型
sscanf(students[i].name, "%[^0-9] %d %f", students[i].name, &students[i].age, &students[i].score); // 正确处理姓名和分数
if (strcmp(students[i].name, "END") == 0) {
break; // 遇到 'END' 结束循环
}
i++;
}
printf("\n请输入要查询的学生名字:");
fgets(search_name, sizeof(search_name), stdin); // 读取查询名字
search_name[strlen(search_name) - 1] = '\0'; // 去除换行符
for (i = 0; i < 5 && strcmp(search_name, students[i].name); i++) {
if (strcmp(search_name, students[i].name) == 0) {
printf("查询的学生 '%s' 的信息:\n姓名:%s\n年龄:%d\n成绩:%f\n", search_name, students[i].name, students[i].age, students[i].score);
break;
}
}
if (i == 5) {
printf("未找到该学生的信息。\n");
}
return 0;
}
阅读全文