请教!急盼解决!

Frederick0000 2008-06-08 06:35:12
这个程序为什么在运行时出错!?
#include<stdio.h>
#include<malloc.h>
#include<string.h>
typedef struct student
{
char name[10];
float score;
struct student *next;
}st;

typedef struct classtype
{
char cname[10];
float avg;
st *snext;
struct classtype *cnext;
}cl;

static cl *create()
{
cl *head=(cl *)malloc(sizeof(cl)),*cp,*ctp;
st *sp,*tp;
char cflag[9],sflag[9];
int i=1,j=1;
printf("请输入第%d个班的班号(输入end1表示输入完毕!):",j);
scanf("%s",cflag);
while(strcmp(cflag,"end1"))
{
cp=(cl *)malloc(sizeof(cl));
if(j==1)
{
strcpy(cp->cname,cflag);
head->cnext=cp;
ctp=cp;
}
else
{
ctp->cnext=cp;
ctp=cp;
}
cp->avg=0;
printf("请输入%s班第%d个学生的姓名(输入end2表示这个班的学生信息输入完毕!):\n",cp->cname,i);
scanf("%s",sflag);
while(strcmp(sflag,"end2"))
{
sp=(st *)malloc(sizeof(st));
strcpy(sp->name,sflag);
printf("请输入这个学生的成绩:");
scanf("%f",sp->score);
cp->avg+=sp->score;
if(i==1)
{
cp->snext=sp;
tp=sp;
}
else
{
tp->next=sp;
tp=sp;
}
i++;
printf("请输入%s班第%d个学生的姓名(输入end2表示这个班的学生信息输入完毕!):\n",cp->cname,i);
scanf("%s",sflag);
}
if(i==1) cp->snext=NULL;
else
{
tp->next=NULL;
ctp->avg/=i-1;
}
j++;
printf("请输入第%d个班的班号(输入end1表示所有班都已输入完毕!):",j);
scanf("%s",cflag);
}
if(j==1) head->cnext=NULL;
else ctp->cnext=NULL;
return(head);
}

static void output(cl *head)
{
cl *cp=head->cnext;
st *sp;
printf("输出:\n");
while(cp!=NULL)
{
printf("%s班:\n",cp->cname);
sp=cp->snext;
printf("姓名 成绩 \n");
while(sp!=NULL)
{
printf("%-10s%-.2f",sp->name,sp->score);
sp=sp->next;
}
printf("平均分:%-.2f\n",cp->avg);
cp=cp->cnext;
}
return;
}

main()
{
cl *head;
head=create();
output(head);
}
...全文
26 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,160

社区成员

发帖
与我相关
我的任务
社区描述
在CSDN学院遇到的问题反馈及对学院的改进建议等。
社区管理员
  • 软件培训社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧