解题思路:

注意事项:

//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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论