你说运行崩溃不知道你用的是什么编译器,可能是printf()函数里面的汉字作怪。我保留汉字用WIN-TC运行时出现乱码,把汉字换成英文再运行就没什么问题。你可以试试看。应该是编译器不支持中文
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
struct student
{
char name[100];
int number;
struct student *next;
};
struct student *Creat(int n)
/*创建链表,根据输入的学生数量创建*/
{
struct student *h,*p1,*p2;
h=p1=p2=NULL;
for(;n>=0;n--)
/*输入的次数循环*/
{
if (h==NULL)
/*如果头指针是空的话,就创建一个空间,并使得p1=h*/
{
p1=(struct student *)malloc(sizeof(struct student));
h=p1;
}
if (h!=NULL&&n>0) /*如果头指针不为空,则继续*/
{
printf("请输入学生的名字:");
scanf("%s",p1->name);
printf("请输入学生的成绩:");
scanf("%d",&p1->number);
p2=p1;
p1->next=(struct student *)malloc(sizeof(struct student));
p1=p1->next;
}
p2->next=NULL;
}
return h;
}
void print(struct student * h) /*打印的函数*/
{
struct student *p=h;
do
{
printf("姓名:%s,成绩:%d\n",p->name,p->number);
p=p->next;
}
while(p!=NULL);
}
int main()
{
int n;
struct student * h;
printf("输入学生总人数:\n");
scanf("%d",&n);
h=Creat(n);
print(h);
return 0;
}