刚改写了一个C语言程序,但老是报错,实在不知道错在什么地方了,请高手指教,在线等,急需帮助。

2025-03-04 19:37:06
推荐回答(3个)
回答1:

结构变量定义时,一定要加上struct
#include
struct student {
long int number;
char name[8];
float score[2];
};
void sort(struct student stud[],int n); //如这里,其它一样,已经改了
void main()
{
struct student stud[3];
int i,j;
for(i=0;i<3;i++)
{
scanf("%ld",&stud[i].number);
scanf("%s",stud[i].name);
for(j=0;j<2;j++)
scanf("%f",&stud[i].score[j]);
}
sort(stud,3);
//输出
printf("\n名次 学号 姓名 数学 英语\n");
for(i=0;i<3;i++)
{
printf("%d ",i+1);
printf("%ld ",stud[i].number);
printf("%7s ",stud[i].name);
for(j=0;j<2;j++)
printf("%7.1f",stud[i].score[j]);
printf("\n"); // 换行
}
}
void sort(struct student stud[],int n)
{
int i,j,min;
struct student t;
for(i=0;i {
min=i;
for(j=i+1;j if((stud[j].score[1]+stud[j].score[2])/2<(stud[min].score[1]+stud[min].score[2])/2)
min=j;
t=stud[i];
stud[i]=stud[min];
stud[min]=t;
}
}

回答2:

这样正确了,不知有没有达到你预期的结果
#include
struct student {
long int number; // 学号
char name[8]; // 姓名
float score[2]; // 2门课程的成绩
};
void sort(student stud[],int n);//声明成绩排序函数
void main()
{
struct student stud[3]; //定义结构体数组
int i,j;
for(i=0;i<3;i++)
{
scanf("%ld",&stud[i].number);
scanf("%s",&stud[i].name);
for(j=0;j<2;j++)
scanf("%f",&stud[i].score[j]);
}
sort(stud,3);
//输出
printf("\n名次 学号 姓名 数学 英语\n");
for(i=0;i<3;i++)
{
printf("%d ",i+1);
printf("%ld ",stud[i].number);
printf("%7s ",stud[i].name);
for(j=0;j<2;j++)
printf("%7.1f",stud[i].score[j]);
printf("\n"); // 换行
}
}
void sort(student stud[],int n)
{
int i,j,min;
student t;
for(i=0;i {
min=i;
for(j=i+1;j if((stud[j].score[1]+stud[j].score[2])/2<(stud[min].score[1]+stud[min].score[2])/2)
min=j;
t=stud[i];
stud[i]=stud[min];
stud[min]=t;
}
}

回答3:

不会