是一个结构体的简单问题,初学结构体,结果运行不出来,而且问题出来后,改不来,求教!
嗯,是这样的,想编一个简单的问题,用结构体,先输入五个学生的姓名,学号,三门课的成绩。然后算出三门课的成绩的平均值,排名,从高到低。然后按排好的名次再输出五个学生的姓名,学号,平均分。
系统老是提示i,j值没有定义,但是我实在搞不懂,我已经在每个子函数开头定义过了,所以想问一下大家。
#include<stdio.h>
typedef struct student
{
long num;
char name[10];
int score[3];
} STUDENT;
typedef struct student2
{
long num;
char name[10];
float ave;
}STUDENT2;
STUDENT stu[5];
STUDENT2 stu2[5],temp;
void input(struct student *);
void calculate(struct student *);
void average(struct student *);
void output(struct student2 * );
void main()
{
input(stu);
calculate(stu);
average(stu);
output( stu2);
void input(struct student *stu)
{
int i,j;
for(i=0;i<5;i++)
{
printf("请输入学生学号:\n");
scanf("%d",&stu[i].num);
printf("请输入学生姓名:\n");
scanf("%s",&stu[i].name);
printf("请输入学生三门课成绩:\n");
for(j=0;j<3;j++)
{
scanf("%d",&stu[i].score[j]);
}
}
}
void average(struct student * stu)
{
int i;
float sum;
for(i=0;i<5;i++)
{
sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2];
stu2[i].ave=sum/3;
}
}
void calculate(struct student * stu)
{
int i,j;
for(i=0;i<5;i++)
{
stu2[i].name=stu[i].name;
stu2[i].num=stu[i].num;
}
for(i=1;i<=4;i++)
for(j=0;j<5-i;j++)
{
if(stu2[j].ave<stu2[j+1].ave)
{
temp=stu2[j];
stu2[j]=stu2[j+1];
stu2[j+1]=temp;
}
}
}
void output(struct student2 * stu2)
{
int i;
for(i=0;i<5;i++)
{
printf("%d, %s, %f",stu2[i].num,stu2[i].name,stu2[i].ave);
}
printf("\n");
}