当前位置:编程学习 > C/C++ >>

(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语言程序设计题目,俺不会做

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,