写一个单链表用键盘输入学生成绩c语言
时间: 2024-09-14 20:08:21 浏览: 41
【c语言课程设计】基于单链表和结构体的学生奖学金评定系统
5星 · 资源好评率100%
在C语言中,我们可以创建一个简单的单链表结构来存储学生的成绩。首先,我们需要定义一个结构体`Student`表示学生信息,包含姓名和成绩;然后定义链表节点结构`Node`,再创建一个链表头指针`head`。以下是基本的步骤:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义学生信息结构体
typedef struct {
char name[50];
int score;
} Student;
// 定义链表节点结构
typedef struct Node {
Student data;
struct Node* next;
} Node;
// 创建一个新的链表节点
Node* createNode(char* name, int score) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode != NULL) {
strcpy(newNode->data.name, name);
newNode->data.score = score;
newNode->next = NULL;
}
return newNode;
}
// 输入学生成绩并添加到链表
void inputStudents(Node** head) {
while (1) {
char name[50], ch;
int score;
printf("请输入学生姓名(输入'q'退出): ");
fgets(name, sizeof(name), stdin);
name[strlen(name)-1] = '\0'; // 移除换行符
if (strcmp(name, "q") == 0)
break;
printf("请输入该学生的成绩: ");
scanf("%d", &score);
Node* newNode = createNode(name, score);
newNode->next = *head; // 添加新节点到链表头部
*head = newNode;
}
}
// 打印链表中的所有学生和成绩
void printList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("姓名:%s, 成绩:%d\n", temp->data.name, temp->data.score);
temp = temp->next;
}
}
int main() {
Node* head = NULL;
inputStudents(&head);
printList(head);
return 0;
}
```
在这个程序中,用户可以依次输入学生姓名和成绩,直到输入'q'退出。最后会打印出所有学生的姓名和成绩。
阅读全文