用c语言编写使用链表输入输出5个学生的信息(学号、姓名、成绩),其中输入输出使用函数实现,在main函数中调用它们。
时间: 2023-06-07 16:07:27 浏览: 187
好的,这是一个关于使用C语言编写学生信息管理系统的问题。以下是可能的解决方案:
首先,需要定义学生信息的结构体类型,包括学号、姓名和成绩:
```
typedef struct student {
int num;
char name[20];
float score;
struct student *next;
} Student;
```
其中,num表示学号,name是一个字符串数组,表示姓名,score表示成绩,next是指向下一个学生结构体的指针。
接下来,需要编写三个函数来实现学生信息的输入、输出和存储:
```
Student *readData()
{
Student *head = NULL;
Student *p = NULL;
int num; char name[20]; float score;
for (int i = 0; i < 5; i++) {
printf("请输入第%d个学生的信息:", i + 1);
scanf("%d%s%f", &num, name, &score);
p = (Student *)malloc(sizeof(Student));
p->num = num;
strcpy(p->name, name);
p->score = score;
p->next = head;
head = p;
}
return head;
}
void printData(Student *head)
{
Student *p = head;
printf("学号\t姓名\t成绩\n");
while (p != NULL) {
printf("%d\t%s\t%.2f\n", p->num, p->name, p->score);
p = p->next;
}
}
void freeData(Student *head)
{
Student *p = head;
while (p != NULL) {
head = p->next;
free(p);
p = head;
}
}
```
readData函数用于输入学生信息,它会创建一个链表,每次输入一个学生的信息,就将它加入链表的头部。最后返回链表的头结点。printData函数用于输出学生信息,它遍历整个链表,打印每个学生的信息。freeData函数用于释放链表节点的内存空间,它也遍历整个链表,每次释放一个节点的内存。
最后,在main函数中调用这三个函数即可:
```
int main()
{
Student *head = NULL;
head = readData();
printData(head);
freeData(head);
return 0;
}
```
这样,就可以用C语言编写一个基本的学生信息管理系统,输入输出5个学生的信息。
阅读全文