各位大神,帮我看下这个程序为什么输不出来结果呢?
#include<stdio.h>#include<stdlib.h>
typedef struct student
{
int num;
char name[10];
char addr[15];
struct student *next;
}Stu;
int main()
{
void input(Stu *head);
void print(Stu *out);
int flag;
Stu *Q;
star: printf("\n\n1.输入学生信息\t\t\t2.显示学生信息\t\t\t0.退出\n");
printf("请您选择序号:");
scanf("%d",&flag);
switch(flag)
{
case 0:return 0;
case 1:
input(Q);
goto star;
break;
case 2:print(Q);
goto star;
break;
}
}
void input(Stu *head)
{
Stu *p1,*p2;
int flag=1,n=0;
p1=p2=(Stu*)malloc(sizeof(Stu));
while(flag)
{
printf("请您输入学号:");
scanf("%d",&p1->num);
printf("请您输入姓名:");
scanf("%s",p1->name);
printf("请您输入地址:");
scanf("%s",p1->addr);
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(Stu*)malloc(sizeof(Stu));
printf("是否继续输入(1/0):");
scanf("%d",&flag);
}
p2->next=NULL;
}
void print(Stu *out)
{
Stu *p;
p=out;
if(out!=NULL)
printf("无学生信息!\n");
else
{
printf("学生信息为:\n");
while(p!=NULL)
{
printf("学号 姓名 地址\n");
printf("%-8d%-8s%-8s\n",p->num,p->name,p->addr);
p=p->next;
}
}
}