求大佬帮忙看看哪里错了,是依据平均分来排序
#include "stdio.h"
struct student
{
char name[20];
int sno;
int score1;
int score2;
float averscore;
}edu[4]={{'刘灿',2021015442,90,95},{'张三',2021015443,85,95},{'李四',2021015442,90,90},{'王五',2021015442,90,85}};
int main()
{
struct student m;
int i;
for(i=0;i<=3;i++)
{
edu[i].averscore=(edu[i].score1+edu[i].score2)/2;
}
m=max(edu,4);
printf("%s\t%d\t%d\t%d\t%d\n",m.name,m.sno,m.score1,m.score2,m.averscore);
return 0;
}
struct student max(struct student x[],int length)
{
int i,j;
struct student t;
for(i=0;i<=length;i++)
for(j=i+1;j<=length;j++)
{
if(x[i].averscore<x[j].averscore)
{
t=x[i];
x[i]=x[j];
x[j]=t;
}
}
return(x[0]);
}

结构体函数类型错误怎么办
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- CSDN专家-天际的海浪 2021-12-19 11:01关注
你题目的解答代码如下:
#include "stdio.h" struct student { char name[20]; int sno; int score1; int score2; float averscore; } edu[4] = {{"刘灿", 2021015442, 90, 95}, {"张三", 2021015443, 85, 95}, {"李四", 2021015442, 90, 90}, {"王五", 2021015442, 90, 85}}; //字符串要用双引号 struct student max(struct student x[], int length); //要在调用前面声明 int main() { struct student m; int i; for (i = 0; i <= 3; i++) { edu[i].averscore = (edu[i].score1 + edu[i].score2) / 2.0;//除数改成浮点数 } m = max(edu, 4); printf("%s\t%d\t%d\t%d\t%f\n", m.name, m.sno, m.score1, m.score2, m.averscore);//m.averscore是浮点数要用%f输出 return 0; } struct student max(struct student x[], int length) { int i, j; struct student t; for (i = 0; i < length; i++) for (j = i + 1; j < length; j++) { if (x[i].averscore < x[j].averscore) { t = x[i]; x[i] = x[j]; x[j] = t; } } return (x[0]); }
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录edu[4] = {{"刘灿", 2021015442, 90, 95}, {"张三", 2021015443, 85, 95}, {"李四", 2021015442, 90, 90}, {"王五", 2021015442, 90, 85}}; //字符串要用双引号
struct student max(struct student x[], int length); //要在调用前面声明
edu[i].averscore = (edu[i].score1 + edu[i].score2) / 2.0;//除数改成浮点数
printf("%s\t%d\t%d\t%d\t%f\n", m.name, m.sno, m.score1, m.score2, m.averscore);//m.averscore是浮点数要用%f输出赞回复