c语言程序,编译出错,请问哪里错了 #include<stdio.h> #include<std

c语言程序,编译出错,请问哪里错了#include<stdio.h>#include<stdlib.h>structstudent{charnum[20];//定义一个结... c语言程序,编译出错,请问哪里错了

#include<stdio.h>
#include<stdlib.h>
struct student
{char num[20];//定义一个结构体
int chinese;
int math;
int english;
int sum;
float ave;
struct student *next;
};

student*Input_Score(int n)
//创建链表存储n个学生的信息,通过键盘输入分数
{   int i;   
 student *stu,*p;
for(i=0,stu=NULL;i<n;i++)
{    p=(student*)malloc(sizeof(student));
printf("请输入学号\n");
scanf("%s",&p->num);
printf("请输入语文成绩\n");
scanf("%d",&p->chinese);
printf("请输入数学成绩\n");
scanf("%d",&p->math);
printf("请输入英语成绩\n");
scanf("%d",&p->english);
p->next=stu; 
stu=p;    }
return stu;
}

void Visit(student *stu,void (*fun)(student *p))//遍历函数
{   student *p;
for(p=stu;p!=NULL;p=p->next)    
    (*fun)(p);
}

void calculate(student *p)
{p->sum=p->chinese+p->math+p->english;
p->ave=0.3*p->chinese+0.5*p->math+0.2*p->english;
}

void output(student *p)
{printf("学号:%s\n语文成绩:%d\n数学成绩:%d\n英语成绩:%d\n",p->num,p->chinese,p->math,p->english);
printf("总分:%d\n加权平均分:%f\n",p->sum,p->ave);//输出成绩信息
}

main()
{student *stu;
int n;
printf("请输入学生个数\n");
scanf("%d",&n);
stu=Input_Score(n);
Visit(stu,calculate(stu));
Visit(stu,output(stu));
//通过遍历函数调用
}

 
展开
 我来答
genesis_201246716
2015-04-16 · TA获得超过169个赞
知道小有建树答主
回答量:791
采纳率:0%
帮助的人:82.9万
展开全部
我发现了一个问题input-score中定义了一个局部变量,*stu 这个变量在这个函数运行结束的时候 分配的空间就没有了,所以你用return是没有结果的 你可以试着把它变成全局变量
更多追问追答
追答
还有 你定义结构体时需要这样  struct  student  stu
m因为你没有用typedf
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式