定义结构体类型: 每个同学的信息:学号、姓名(英文、无重名)、性别(英文)、三门课程成绩(语文、数学、英语) 二、功能要求: 运行后,显示如下信息,提示输入 数字,并运行数字所对应的功能,如:按 1,执行“显示所有同学的信息”;按6,执行“删除一个同学”。 1.显示所有同学的信息 2. 查找指定姓名的信息 (模糊查 找:输入姓名中任何一个或多个文字,比如:输入“zhang”,就品示所有姓名中含 “zhang”的信息) 3.品示有不及格同学的信息 4.按指定课程排序输出 5.增加一个新同学 6.修改指定姓名的信息 7.删除指定姓名的信息 0.退出
时间: 2024-02-15 19:02:40 浏览: 28
好的,以下是结构体类型的定义及功能代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENT 100
// 定义结构体类型
typedef struct {
char id[20]; // 学号
char name[20]; // 姓名
char gender[10]; // 性别
int score_chinese; // 语文成绩
int score_math; // 数学成绩
int score_english; // 英语成绩
} Student;
// 学生信息数组
Student students[MAX_STUDENT];
// 学生数量
int student_count = 0;
// 显示所有同学的信息
void display_all_students() {
printf("所有同学的信息:\n");
for (int i = 0; i < student_count; i++) {
printf("%s %s %s %d %d %d\n", students[i].id, students[i].name, students[i].gender, students[i].score_chinese, students[i].score_math, students[i].score_english);
}
}
// 查找指定姓名的信息
void search_student_by_name() {
char name[20];
printf("请输入要查找的姓名:");
scanf("%s", name);
printf("查找到的姓名包含\"%s\"的同学有:\n", name);
for (int i = 0; i < student_count; i++) {
if (strstr(students[i].name, name) != NULL) {
printf("%s %s %s %d %d %d\n", students[i].id, students[i].name, students[i].gender, students[i].score_chinese, students[i].score_math, students[i].score_english);
}
}
}
// 品示有不及格同学的信息
void display_failed_students() {
printf("有不及格同学的信息:\n");
for (int i = 0; i < student_count; i++) {
if (students[i].score_chinese < 60 || students[i].score_math < 60 || students[i].score_english < 60) {
printf("%s %s %s %d %d %d\n", students[i].id, students[i].name, students[i].gender, students[i].score_chinese, students[i].score_math, students[i].score_english);
}
}
}
// 按指定课程排序输出
void sort_students_by_course() {
int course;
printf("请选择要排序的课程(1-语文,2-数学,3-英语):");
scanf("%d", &course);
// 简单冒泡排序
for (int i = 0; i < student_count - 1; i++) {
for (int j = 0; j < student_count - i - 1; j++) {
int score1, score2;
switch (course) {
case 1: // 语文
score1 = students[j].score_chinese;
score2 = students[j + 1].score_chinese;
break;
case 2: // 数学
score1 = students[j].score_math;
score2 = students[j + 1].score_math;
break;
case 3: // 英语
score1 = students[j].score_english;
score2 = students[j + 1].score_english;
break;
}
if (score1 < score2) {
// 交换位置
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
printf("按%s成绩从高到低排序后的同学信息:\n", course == 1 ? "语文" : course == 2 ? "数学" : "英语");
for (int i = 0; i < student_count; i++) {
printf("%s %s %s %d %d %d\n", students[i].id, students[i].name, students[i].gender, students[i].score_chinese, students[i].score_math, students[i].score_english);
}
}
// 增加一个新同学
void add_student() {
if (student_count >= MAX_STUDENT) {
printf("同学数量已达上限,无法继续添加!\n");
return;
}
Student student;
printf("请输入新同学的学号:");
scanf("%s", student.id);
printf("请输入新同学的姓名:");
scanf("%s", student.name);
printf("请输入新同学的性别:");
scanf("%s", student.gender);
printf("请输入新同学的语文成绩:");
scanf("%d", &student.score_chinese);
printf("请输入新同学的数学成绩:");
scanf("%d", &student.score_math);
printf("请输入新同学的英语成绩:");
scanf("%d", &student.score_english);
students[student_count++] = student;
printf("添加成功!\n");
}
// 修改指定姓名的信息
void modify_student_by_name() {
char name[20];
printf("请输入要修改的同学姓名:");
scanf("%s", name);
for (int i = 0; i < student_count; i++) {
if (strcmp(students[i].name, name) == 0) {
printf("请输入新的学号:");
scanf("%s", students[i].id);
printf("请输入新的姓名:");
scanf("%s", students[i].name);
printf("请输入新的性别:");
scanf("%s", students[i].gender);
printf("请输入新的语文成绩:");
scanf("%d", &students[i].score_chinese);
printf("请输入新的数学成绩:");
scanf("%d", &students[i].score_math);
printf("请输入新的英语成绩:");
scanf("%d", &students[i].score_english);
printf("修改成功!\n");
return;
}
}
printf("未找到姓名为%s的同学!\n", name);
}
// 删除指定姓名的信息
void delete_student_by_name() {
char name[20];
printf("请输入要删除的同学姓名:");
scanf("%s", name);
for (int i = 0; i < student_count; i++) {
if (strcmp(students[i].name, name) == 0) {
for (int j = i + 1; j < student_count; j++) {
students[j - 1] = students[j];
}
student_count--;
printf("删除成功!\n");
return;
}
}
printf("未找到姓名为%s的同学!\n", name);
}
int main() {
int choice;
do {
printf("1.显示所有同学的信息\n");
printf("2.查找指定姓名的信息\n");
printf("3.品示有不及格同学的信息\n");
printf("4.按指定课程排序输出\n");
printf("5.增加一个新同学\n");
printf("6.修改指定姓名的信息\n");
printf("7.删除指定姓名的信息\n");
printf("0.退出\n");
printf("请选择要执行的功能:");
scanf("%d", &choice);
switch (choice) {
case 1:
display_all_students();
break;
case 2:
search_student_by_name();
break;
case 3:
display_failed_students();
break;
case 4:
sort_students_by_course();
break;
case 5:
add_student();
break;
case 6:
modify_student_by_name();
break;
case 7:
delete_student_by_name();
break;
case 0:
printf("感谢使用!\n");
break;
default:
printf("输入有误,请重新输入!\n");
break;
}
} while (choice != 0);
return 0;
}
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)