一个关于链表创建的问题
#include "stdio.h"#include "stdlib.h"
#include <conio.h>
#define LEN sizeof(struct students)
#define NULL 0
typedef struct students
{
int id;//学号
char name[20];//名字
char sex[10];//性别
float score[5];//存放学生5门成绩
float sum;//总分
float ave;//平均分
int rank;//名次
struct students *next;
}STU;
STU *creat_record()
{ int i;
int n=1;
char command,ch;
STU *head,*p1,*p2;
p1=p2=(STU*) malloc(LEN);
p1->sum=0;
system("cls");
printf("\n请输入相关信息。。。。\n");
printf("第%d个记录\n",n);
printf("\n学号:");
scanf("%d",&p1->id);
printf("\n姓名:");
scanf("%s",p1->name);
printf("\n性别:");
scanf("%s",p1->sex);
printf("\n5科的学分(以空格隔开):\n");
for(i=0;i<5;i++)
{
scanf("%f",&p1->score[i]);
p1->sum+=p1->score[i];
}
p1->ave=p1->sum/i;
printf("\n总分:%0.2f 平均分:%0.2f\n",p1->sum,p1->ave);
printf("\n是否继续输入?(Y/N)");
fflush(stdin);//在scanf接收一个字符前应先清空缓冲区,以免前次输入时末尾的回车带入下次的输入中
scanf("%c",&command);
while(command=='y' || command=='Y')
{
n=n+1;
if(n=2)
head=p1;
else
p2=p1;
p1=(STU*) malloc(LEN);
p1->sum=0;
system("cls");
printf("\n请输入相关信息。。。。\n");
printf("第%d个记录\n",n);//为什么这里是无限第二个记录,谁可以帮忙解释下··
printf("\n学号:");
scanf("%d",&p1->id);
printf("\n姓名:");
scanf("%s",p1->name);
printf("\n性别:");
scanf("%s",p1->sex);
printf("\n5科的学分(以空格隔开):\n");
for(i=0;i<5;i++)
{
scanf("%f",&p1->score[i]);
p1->sum+=p1->score[i];
}
p1->ave=p1->sum/i;
printf("\n总分:%0.2f 平均分:%0.2f\n",p1->sum,p1->ave);
p2->next=p1;
n++;
printf("\n是否继续输入?(Y/N)");
fflush(stdin);
scanf("%c",&command);
}
p1->next=NULL;
return head;
}
main()
{
creat_record();
}