(C语言)检查为什么没有输出平均分以及最高成绩者
#include<stdio.h>
#include<string.h>
struct student
{
char no[10],name[20],sex[4];
int t[4];
float ave;
};
struct student s[7];
void average(struct student s[7])
{
int i,k,j;
float sum,max;
for(i=0;i<7;i++)
{
sum=0;
for(j=0;j<4;j++)
sum=s[i].t[j]+sum;
s[i].ave=sum/4.0;
}
max=s[0].ave;
for(i=1;i<7;i++)
{
if(s[i].ave>max)
{
k=i;
max=s[i].ave;
}
}
}
void bjxm(struct student s[7])
{
struct student z;
int i,k,j;
for(i=0;i<6;i++)
{
k=i;
for(j=k+1;j<7;j++)
{
if(strcmp(s[1].name,s[i].name)>0)
k=j;
if(k!=j)
{
z=s[i];
s[i]=s[k];
s[k]=z;
}
}
printf("%s %s %s %d %d %d %d %.2f\n",s[i].no,s[i].name,s[i].sex,s[i].t[0],s[i].t[1],s[i].t[2],s[i].t[3],s[i].ave);
}
printf("%s %s %s %d %d %d %d %.2f\n",s[k].no,s[k].name,s[k].sex,s[k].t[0],s[k].t[1],s[k].t[2],s[k].t[3],s[k].ave);
}
main()
{
struct student s[7]={{"100101","阎 旭","男",88,92,78,86},
{"100102","王珊珊","女",78,95,76,87},
{"100103","姚彦兆","男",88,90,76,88},
{"100104","时传宗","男",85,92,71,86},
{"100105","于晓飞","女",88,98,78,85},
{"100106","高全悦","男",88,92,78,86},
{"100107","赵伟闯","男",84,93,78,86}};
bjxm(s);
average(s);
}
追问:输出平均分了
可是最高成绩者信息并为输出啊
答案:bjxm(s);
average(s);
改为:
average(s);
bjxm(s);
其他:void bjxm(struct student s[7])这个函数写的有问题,修改如下:
void bjxm(struct student s[7])
{
struct student z;
int i,k;
k = 0;
z = s[0];
for(i=0;i<7;i++)
{
if(s[i].ave>z.ave)
{ k=i;
z = s[i];
}
printf("%s %s %s %d %d %d %d %.2f\n",s[i].no,s[i].name,s[i].sex,s[i].t[0],s[i].t[1],s[i].t[2],s[i].t[3],s[i].ave);
}
printf("%s %s %s %d %d %d %d %.2f\n",s[k].no,s[k].name,s[k].sex,s[k].t[0],s[k].t[1],s[k].t[2],s[k].t[3],s[k].ave);
}
=============
然后main函数调用顺序改为:
average(s);
bjxm(s);
上一个:济南大学C语言补考严吗?难不难?我是大四的学生,还有1周考试
下一个:C语言程序设计题目,俺不会做