原题链接:[编程入门]结构体之成绩记录
解题思路:
注意事项:
//fgets(p->s_num,sizeof(p->s_num),stdin);//全部接收32
//fgets(p->name,sizeof(p->name), stdin);//此处应该使用scanf(因为scanf遇到32(space)或13(enter)就结束,并保留32和13)
参考代码:
#include <stdio.h> #include <malloc.h> typedef struct student { char s_num[10]; char name[15]; int subject1; int subject2; int subject3; struct student* next; }stu; stu* input(stu* head); void print(stu* head); int main() { stu* head = NULL,*p1 = NULL,*p2 = NULL; int n = 0,i = 0; scanf("%d", &n); p1 = head = (stu*)malloc(sizeof(stu)); if (head == NULL) { puts("Fail to memery"); exit(-1); } while (i < n) { p2 = (stu*)malloc(sizeof(stu)); if (p2 == NULL) { puts("Fail to memery"); exit(-1); } else { p2->next = NULL; p1->next = p2; p1 = p2; } i++; } head = input(head); print(head); } stu *input(stu*head) { stu* p = head; while (p->next != NULL) { getchar(); scanf("%s",p->s_num); scanf("%s",p->name); //fgets(p->s_num,sizeof(p->s_num),stdin);//全部接收32 //fgets(p->name,sizeof(p->name), stdin); scanf("%d", &p->subject1); scanf("%d", &p->subject2); scanf("%d", &p->subject3); p = p->next; } return head; } void print(stu* head) { stu* p = head; while (p->next) { printf("%s, %s, %d, %d, %d\n",p->s_num,p->name,p->subject1,p->subject2,p->subject3); p = p->next; } }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复