C语言不使用结构体只使用数组设计一个学生管理系统,要求有以下功能:输入基本信息(学号、姓名、课程名、各科成绩等);显示所有信息或根据要求输出信息;按学号排序;按姓名查询。
时间: 2024-02-05 07:02:58 浏览: 83
C语言利用结构体数组实现学生成绩管理系统
5星 · 资源好评率100%
好的,我来为您解答这个问题。
首先,我们可以定义一个二维数组来存储学生信息,每一行表示一个学生,每一列表示一个字段,例如:
```c
#define MAX_STUDENTS 100
#define MAX_NAME_LENGTH 20
#define MAX_COURSE_LENGTH 20
int students[MAX_STUDENTS][6]; // 0: 学号 1: 姓名 2-5: 成绩
```
接着,我们可以定义一些函数来实现各种功能。
1. 输入信息
```c
void input_info(int n) {
for (int i = 0; i < n; i++) {
printf("请输入第 %d 个学生的信息:\n", i + 1);
scanf("%d%s%d%d%d%d", &students[i][0], students[i][1], &students[i][2], &students[i][3], &students[i][4], &students[i][5]);
}
}
```
2. 显示信息
```c
void print_info(int n) {
printf("学号\t姓名\t课程1\t课程2\t课程3\t课程4\n");
for (int i = 0; i < n; i++) {
printf("%d\t%s\t%d\t%d\t%d\t%d\n", students[i][0], students[i][1], students[i][2], students[i][3], students[i][4], students[i][5]);
}
}
```
3. 根据要求输出信息
```c
void print_by_order(int n, int order) {
if (order == 0) { // 按学号排序
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (students[i][0] > students[j][0]) {
int temp[6];
memcpy(temp, students[i], sizeof(temp));
memcpy(students[i], students[j], sizeof(temp));
memcpy(students[j], temp, sizeof(temp));
}
}
}
} else if (order == 1) { // 按姓名查询
char name[MAX_NAME_LENGTH];
printf("请输入要查询的学生姓名:");
scanf("%s", name);
int found = 0;
for (int i = 0; i < n; i++) {
if (strcmp(students[i][1], name) == 0) {
printf("%d\t%s\t%d\t%d\t%d\t%d\n", students[i][0], students[i][1], students[i][2], students[i][3], students[i][4], students[i][5]);
found = 1;
}
}
if (!found) {
printf("未找到该学生\n");
}
}
}
```
完整代码如下:
阅读全文