c语言 结构体 输入学生个数n。输入这n个学生姓名、学号、五门课成绩。输出姓名、学号、五门课成绩、平均分、总分。程序出错。求指教
#include<stdio.h>
struct information
{
char name[21];
char number[21];
int grade[5];
int average;
int total;
};
typedef struct information INFORMATION;
main()
{
int n,i,k=0,p=0;char ch=0;INFORMATION* Ptr=NULL;
printf("Please input the number of students:");//输入并读取学生数n
scanf("%d",&n);
fflush(stdin);
Ptr=malloc(n*sizeof(INFORMATION));
if(Ptr!=NULL)//若分配内存成功
{
printf("Please input the information:\n") ;//输入学生信息
for(i=0;i<n;i++)//输入姓名(如 bill gates)
{
scanf("%c",&ch);
while(ch!='\n')
{
Ptr[i].name[p]=ch;
p++;
scanf("%c",&ch);
}
Ptr[i].name[p+1]=0;
scanf("%c",ch);//输入学号(含字母、数字)
while(ch!=13)
{
Ptr[i].number[k]=ch;
k++;
scanf("%c",&ch);
}
Ptr[i].number[k+1]=0;
for(k=0;k<5;k++)//输入五门课成绩
{
scanf("%d",&Ptr[i].grade[k]);
}
Ptr[i].total=Ptr[i].grade[0]+Ptr[i].grade[1]+Ptr[i].grade[2]+Ptr[i].grade[3]+Ptr[i].grade[4];
Ptr[i].average=Ptr[i].total/5;
}
printf("The students' information:\n");//打印学生信息
for(i=0;i<n;i++)
{
printf("%s\n",Ptr[i].name);
printf("%s\n",Ptr[i].number);
printf("%d %d %d %d %d\n",Ptr[i].grade[0],Ptr[i].grade[1],Ptr[i].grade[2],Ptr[i].grade[3],Ptr[i].grade[4]);
printf("average:%d total:%d\n\n\n",Ptr[i].average,Ptr[i].total);
}
}
else
{
printf("分配内存失败!");
}
system("Pause");
return 0;
}