求帮忙看下这段基础的C语言链表代码 ,为什么输出学生成绩是0
程序代码:#include <stdio.h>
#include <stdlib.h>
typedef struct student{
long num;
float score;
struct student *next;
} STU;
STU *head=NULL;
STU *creat(void)
{
long number;
float grade;
STU *last=NULL;
scanf("%d %d",&number,&grade);
while (number!=0&&grade!=0)
{ //add to linked-list
STU *p=(STU*)malloc(sizeof(STU));
p->num=number;
p->score=grade;
p->next=NULL;
// find the last
last=head;
if(last){
while(last->next){
last=last->next;}
//attach
last->next=p;
}
else head=p;
scanf("%d %d",&number,&grade);
};
return(head);
}
int main()
{STU *pt=creat();
printf("\nnum:%ld\nscore:%5.1f\n",pt->num,pt->score); //输出链表第一个学生的学号和成绩
return 0;
}
结果是 输入
1001 78
1002 79
0 0结束输入
然后输出
num:1001
score:0.0
输出的成绩一直是0 这是怎么回事
求大神帮忙看看 谢谢




