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));
//通过遍历函数调用
}
展开
#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));
//通过遍历函数调用
}
展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询