用基本简单的c语言编写1学生成绩录入; 2学生成绩的输出; 3按姓名查询某学生信息并输出; 4按照成绩由高到低排序并输出; 要求 a、用数组存储学生信息; b、基本功能用函数实现; c、至少完成实验内容中3个功能,学生可以自己增加或减少题目功能; d、程序能正确执行、输入与输出有必要的提示信息、界面美观; e、用菜单调用加分。
时间: 2024-03-26 20:34:40 浏览: 59
好的,以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENT 100 // 最多学生数
struct Student {
char name[20]; // 姓名
int score; // 成绩
};
struct Student students[MAX_STUDENT]; // 学生信息数组
int studentCount = 0; // 学生数
// 添加学生信息
void addStudent() {
if (studentCount >= MAX_STUDENT) {
printf("学生信息已满,无法添加!\n");
return;
}
struct Student student;
printf("请输入学生姓名:\n");
scanf("%s", student.name);
printf("请输入学生成绩:\n");
scanf("%d", &student.score);
students[studentCount++] = student;
printf("添加学生信息成功!\n");
}
// 输出学生信息
void showStudents() {
if (studentCount == 0) {
printf("当前没有学生信息!\n");
return;
}
printf("姓名\t成绩\n");
for (int i = 0; i < studentCount; i++) {
printf("%s\t%d\n", students[i].name, students[i].score);
}
}
// 查询学生信息
void searchStudent() {
char name[20];
printf("请输入学生姓名:\n");
scanf("%s", name);
for (int i = 0; i < studentCount; i++) {
if (strcmp(students[i].name, name) == 0) {
printf("姓名\t成绩\n");
printf("%s\t%d\n", students[i].name, students[i].score);
return;
}
}
printf("未找到该学生信息!\n");
}
// 比较函数,用于排序
int cmp(const void* a, const void* b) {
struct Student* s1 = (struct Student*) a;
struct Student* s2 = (struct Student*) b;
return s2->score - s1->score;
}
// 按照成绩排序并输出
void sortStudents() {
if (studentCount == 0) {
printf("当前没有学生信息!\n");
return;
}
qsort(students, studentCount, sizeof(struct Student), cmp);
printf("姓名\t成绩\n");
for (int i = 0; i < studentCount; i++) {
printf("%s\t%d\n", students[i].name, students[i].score);
}
}
int main() {
int choice;
while (1) {
printf("1. 录入学生信息\n");
printf("2. 显示学生信息\n");
printf("3. 查询学生信息\n");
printf("4. 按照成绩排序并输出\n");
printf("0. 退出\n");
printf("请输入你的选择:\n");
scanf("%d", &choice);
switch (choice) {
case 1:
addStudent();
break;
case 2:
showStudents();
break;
case 3:
searchStudent();
break;
case 4:
sortStudents();
break;
case 0:
printf("谢谢使用!\n");
return 0;
default:
printf("无效的选择!\n");
break;
}
}
return 0;
}
```
代码中定义了一个`Student`结构体来存储学生姓名和成绩,然后使用一个`students`数组来存储学生信息。通过循环显示菜单,用户输入对应的数字来进行相应的操作。具体实现如下:
1. 添加学生信息:从用户输入中读取学生姓名和成绩,然后将其添加到`students`数组中。如果`students`数组已满,则提示添加失败。
2. 显示学生信息:遍历`students`数组,输出每个学生的姓名和成绩。如果`students`数组为空,则提示当前没有学生信息。
3. 查询学生信息:从用户输入中读取学生姓名,然后遍历`students`数组查找该学生信息。如果找到则输出该学生的姓名和成绩,否则提示未找到该学生信息。
4. 按照成绩排序并输出:使用`qsort`函数按照成绩从高到低排序`students`数组,然后遍历数组输出每个学生的姓名和成绩。如果`students`数组为空,则提示当前没有学生信息。
需要注意的是,为了让程序界面美观,我们在输出菜单和提示信息时使用了换行符`\n`和制表符`\t`,同时在读取字符串时使用了`scanf`函数,可以通过在字符串中添加空格或使用`fgets`函数来避免读取字符串时出现的问题。
阅读全文