#include "stdio.h"#include<malloc.h>#include<string.h>#include<ctype.h>#define LEN struct studentstruct student{ int num; int score; struct student*next;};struct student*create(){ char ch; struct student *head; struct student*p1,*p2; int a=0; printf("是否输入新数据:\n"); while(toupper(ch=getchar())=='Y') { p1=(LEN*)malloc(sizeof(LEN)); scanf("%d%d",&(*p1).num,&(*p1).score); a++; if(a==1) head=p1; else (*p2).next=p1; p2=p1; p1->next=NULL; } return(head);}void print(struct student *head){ struct student *p; p=head; while(p!=NULL) { printf("\n学号:%d,成绩:%d",p->num,p->score); p=p->next; }}void main( ){ print(create());}
1 回答
已采纳
zy112
TA贡献8条经验 获得超10个赞
getchar() 会接受回车, 所以你在输入了学号和成绩之后,你会输入回车,然后getchar() 就会接受回车, 不等于 Y , 所以输入就结束了, 你在while 后面输入一个getchar()就可以了。。如下。
struct student*create()
{
char ch;
struct student *head;
struct student*p1,*p2;
int a=0;
printf("是否输入新数据:\n");
while(toupper(ch=getchar())=='Y')
{
p1=(LEN*)malloc(sizeof(LEN));
scanf("%d%d",&(*p1).num,&(*p1).score);
a++;
if(a==1)
head=p1;
else
(*p2).next=p1;
p2=p1;
p1->next=NULL;
getchar();
}
return(head);
}- 1 回答
- 0 关注
- 1487 浏览
添加回答
举报
0/150
提交
取消
