用一个数组Student[1000],记录N个学生的学号。定义一个函数AddStudent( ),其功能是向Student[ ]数组中添加一个学生的学号。在主程序中,用该函数添加3个学生的学号,并输出所有学生的学号。
时间: 2024-12-09 12:18:47 浏览: 12
要实现这个功能,我们可以使用动态内存分配,因为学生数量是不确定的。这里我们创建一个`AddStudent`函数用于在数组末尾插入新的学生,以及一个`DisplayStudents`函数用来打印所有学生的学号。
首先,我们需要在`main`函数中为数组分配初始空间,然后根据需要动态地扩展它。这里假设初始容量为1000,但可以根据实际情况调整。下面是完整的C语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义结构体 Student, 包含学号属性
typedef struct {
int id;
} Student;
// 动态添加学生的函数
void AddStudent(Student** students, int* size) {
if (*size >= 1000) {
// 扩展数组大小
*students = (Student*) realloc(*students, (*size + 1000) * sizeof(Student));
if (*students == NULL) {
printf("Memory allocation failed.\n");
return;
}
*size += 1000;
}
(*students)[*size].id = (*size) + 1; // 学号从1开始编号
}
// 显示所有学生的函数
void DisplayStudents(Student* students, int size) {
for (int i = 0; i < size; i++) {
printf("Student %d: ID - %d\n", i + 1, students[i].id);
}
}
int main() {
int n = 3; // 添加的学生数量
Student* students = malloc(n * sizeof(Student)); // 初始分配空间
int size = n;
// 添加3个学生的学号
for (int i = 0; i < n; i++) {
AddStudent(&students, &size);
}
// 输出所有学生的学号
DisplayStudents(students, size);
free(students); // 释放内存
return 0;
}
```
在这个例子中,`AddStudent`函数会在数组已满时自动扩容并分配更多内存。`DisplayStudents`函数则遍历数组并打印每个学生的信息。记得在完成操作后释放动态分配的内存。
阅读全文