当前位置: 代码迷 >> C语言 >> 算法有错 同是新手的来改改 嘿嘿
  详细解决方案

算法有错 同是新手的来改改 嘿嘿

热度:394   发布时间:2008-06-14 18:50:46.0
算法有错 同是新手的来改改 嘿嘿
#include "stdio.h"
struct st
{
  int number;
  char name[20];
  float scroe[3];

};

struct st s[10];



float ave(struct st s[10],int n)
{
  float sum=0,a;
   int i,j;
   for(i=0;i<10;i++)
   {
     for(j=0;j<3;j++)
     {
       sum+=s[i].scroe[j];
     }
   }

   a=sum/n;
   return a;
}



void hig(struct st s[10])
{
  float sum,max,a;
   int i,j,k=0;
     max=0;
   for(i=0;i<10;i++)
   {
     for(j=0;j<3;j++)
     {
       sum=0;
       sum+=s[i].scroe[j];
     }
     if(k==0)
     {
      max=sum;
     }
     else if(sum>max)
     {
      max=sum;
      k=i;
     }
   }
   a=max/3;
     printf("最高分数的同学:\n学号\t 姓名\t 分数1\t  分数2\t  分数3\t \n");
     printf("%d\t%s\t%f\t%f\t%f\n",s[k].number,s[k].name,s[k].scroe[0],s[k].scroe[1],s[k].scroe[2]);
     printf("他的平均分:%f\n",a);
}

main()
{

int i,j;

    printf("请输入数据:\n学号 姓名 分数1  分数2  分数3 \n");

for(i=0;i<10;i++)
{
    scanf("%d",&s[i].number);
    printf("\t");

    scanf("%s",s[i].name);
    printf("\t");

  for(j=0;j<3;j++)
  {
    scanf("%f",&s[i].scroe[j]);
    printf("\t ");
  }
  printf("\n");
}

     printf("3门课总平均成绩:\n");
     printf("%f\n",ave(s,30));
     hig(s);
}




不要把改好的贴出来
搜索更多相关的解决方案: sum  算法  float  int  

----------------解决方案--------------------------------------------------------
  相关解决方案