求帮忙看下这段基础的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 这是怎么回事
求大神帮忙看看 谢谢

 
											





 
	    



