悬着的心__会乱吧 关注:5贴子:21
  • 9回复贴,共1
#include <stdio.h>
#define MAXNUM 100
int main(void)
{
struct student
{
int xuehao;
char name[20];
int xueke1;
int xueke2;
int xueke3;
};
struct student stu[MAXNUM];
int N;
int i;
int ts[MAXNUM];
int max;
int j;
double sum1=0.0,sum2=0.0,sum3=0.0;
double ave1,ave2,ave3;
scanf("%d\n",&N);
for(i=0;i<N;i++)
scanf("%d%s%d%d%d",&stu[i].xuehao,stu[i].name,&stu[i].xueke1,&stu[i].xueke2,&stu[i].xueke3);
if(i<N-1)
printf("%c",'\n');
for(i=0;i<N;i++)
{
sum1=sum1+stu[i].xueke1;
sum2=sum2+stu[i].xueke2;
sum3=sum3+stu[i].xueke3;
ts[i]=stu[i].xueke1+stu[i].xueke2+stu[i].xueke3;
}
ave1=sum1/N;
ave2=sum2/N;
ave3=sum3/N;
printf("%.0f %.0f %.0f\n",ave1,ave2,ave3);
max=ts[0];
j=0;
for(i=1;i<N;i++)
if(ts[i]>max)
{
max=ts[i];
j=i;
}
printf("%d %s %d %d %d",stu[j].xuehao,stu[j].name,stu[j].xueke1,stu[j].xueke2,stu[j].xueke3);
return 0;
}


IP属地:江苏来自iPhone客户端1楼2015-01-06 09:20回复
    #include <stdio.h>
    #include <malloc.h>
    struct mystu
    {
    unsigned int num;
    char name[20];
    /*int s1;
    int s2;
    int s3;*/
    int s[3];
    };
    void myinput(struct mystu* q,int n);
    void myprint(struct mystu* q,int m);
    double myave(struct mystu* q,int m,int j);
    unsigned int mymax(struct mystu* q,int m);
    void myprinti(struct mystu* q,int i);
    int main(void)
    {
    int n;
    int maxindex;
    struct mystu* p;
    double avescore[3];
    int i;
    //printf("qingshuruu")
    scanf("%d",&n);//接受的是多少个学生
    p=(struct mystu*)malloc(n*sizeof(struct mystu));//n个学生的数据空间已经分配。
    myinput(p,n);
    //myprint(p,n);
    for(i=0;i<3;i++)
    avescore[i]=myave(p,n,i);//求出第i门课的平均分
    printf("%.0lf %.0lf %.0lf\n",avescore[0],avescore[1],avescore[2]);
    maxindex=mymax(p,n);//它的值是学生对应的数组下标
    myprinti(p,maxindex);
    return 0;
    }
    void myinput(struct mystu* q,int m)
    {
    int i;
    for(i=0;i<m;i++)
    scanf("%d%s%d%d%d",&(q+i)->num,(q+i)->name,&(q+i)->s[0],&(q+i)->s[1],&(q+i)->s[2]);
    }
    void myprint(struct mystu* q,int m)
    {
    int i;
    for(i=0;i<m;i++)
    printf("%d %s %d %d %d\n",(q+i)->num,(q+i)->name,(q+i)->s[0],(q+i)->s[1],(q+i)->s[2]);
    }
    double myave(struct mystu* q,int m,int j)
    {
    double sum=0,ave;
    int i;
    for(i=0;i<m;i++)//第i个人
    sum+=(q+i)->s[j];
    ave=sum/m;
    return ave;
    }
    unsigned int mymax(struct mystu* q,int m)
    {
    int* psum;
    int maxindex;
    int s=0;
    int i;
    int j;
    int tempmax=-1;
    psum=(int*)malloc(m*sizeof(int));
    for(i=0;i<2;i++)
    {
    s=0;//注意:累加器,计算器初始化成=0,连乘器=1。
    //特点注意:如果累加器,计算器、连乘器放在嵌套循环中时,一定要注意他们
    //所放置的位置【最外层循环外面,还是在中间???】
    for(j=0;j<3;j++)
    s+=(q+i)->s[j];
    *(psum+i)=s;
    }
    for(i=0;i<2;i++)
    {
    if(tempmax<*(psum+i))
    {
    tempmax=*(psum+i);
    maxindex=i;
    }
    }
    return maxindex;
    }
    void myprinti(struct mystu* q,int i)
    {
    printf("%d %s %d %d %d\n",(q+i)->num,(q+i)->name,(q+i)->s[0],(q+i)->s[1],(q+i)->s[2]);
    }


    IP属地:江苏来自iPhone客户端2楼2015-01-06 09:50
    回复
      /*#include <stdio.h>
      #include <stdlib.h>
      #define MAXNUM 100
      int main(void)
      {
      struct student
      {
      int xuehao;
      char name[20];
      int xueke1;
      int xueke2;
      int xueke3;
      };
      struct student stu[MAXNUM];
      int N;
      int i;
      int ts[MAXNUM];
      int max;
      int j;
      double sum1=0.0,sum2=0.0,sum3=0.0;
      double ave1,ave2,ave3;
      FILE *fp,*fp1;
      fp=fopen("t1.txt","r");
      fp1=fopen("t2.txt","w");
      if(fp==NULL)
      {
      printf("错误");
      exit(1);
      }
      if(fp1==NULL)
      {
      printf("错误");
      exit(1);
      }
      fscanf(fp,"%d\n",&N);
      for(i=0;i<N;i++)
      fscanf(fp,"%d%s%d%d%d",&stu[i].xuehao,stu[i].name,&stu[i].xueke1,&stu[i].xueke2,&stu[i].xueke3);
      if(i<N-1)
      fprintf(fp1,"%c",'\n');
      for(i=0;i<N;i++)
      {
      sum1=sum1+stu[i].xueke1;
      sum2=sum2+stu[i].xueke2;
      sum3=sum3+stu[i].xueke3;
      ts[i]=stu[i].xueke1+stu[i].xueke2+stu[i].xueke3;
      }
      ave1=sum1/N;
      ave2=sum2/N;
      ave3=sum3/N;
      fprintf(fp1,"%.0f %.0f %.0f\n",ave1,ave2,ave3);
      max=ts[0];
      j=0;
      for(i=1;i<N;i++)
      if(ts[i]>max)
      {
      max=ts[i];
      j=i;
      }
      fprintf(fp1,"%d %s %d %d %d",stu[j].xuehao,stu[j].name,stu[j].xueke1,stu[j].xueke2,stu[j].xueke3);
      fclose(fp);
      fclose(fp1);
      }*/
      #include <stdio.h>
      #include <malloc.h>
      #include <stdlib.h>
      struct mystu
      {
      unsigned int num;
      char name[20];
      /*int s1;
      int s2;
      int s3;*/
      int s[3];
      };
      void myinput(struct mystu* q,int n,FILE *fp,FILE *fp1);
      void myprint(struct mystu* q,int m,FILE *fp,FILE *fp1);
      double myave(struct mystu* q,int m,int j,FILE *fp,FILE *fp1);
      unsigned int mymax(struct mystu* q,int m,FILE *fp,FILE *fp1);
      void myprinti(struct mystu* q,int i,FILE *fp,FILE *fp1);
      int main(void)
      {
      int n;
      int maxindex;
      struct mystu* p;
      double avescore[3];
      int i;
      FILE *fp,*fp1;
      fp=fopen("t1.txt","r");
      fp1=fopen("t2.txt","w");
      if(fp==NULL)
      {
      printf("错误");
      exit(1);
      }
      if(fp1==NULL)
      {
      printf("错误");
      exit(1);
      }
      //printf("qingshuruu")
      fscanf(fp,"%d",&n);//接受的是多少个学生
      p=(struct mystu*)malloc(n*sizeof(struct mystu));//n个学生的数据空间已经分配。
      myinput(p,n,fp,fp1);
      //myprint(p,n);
      for(i=0;i<3;i++)
      avescore[i]=myave(p,n,i,fp,fp1);//求出第i门课的平均分
      fprintf(fp1,"%.0lf %.0lf %.0lf\n",avescore[0],avescore[1],avescore[2]);
      maxindex=mymax(p,n,fp,fp1);//它的值是学生对应的数组下标
      myprinti(p,maxindex,fp,fp1);
      fclose(fp);
      fclose(fp1);
      return 0;
      }
      void myinput(struct mystu* q,int m,FILE *fp,FILE *fp1)
      {
      int i;
      for(i=0;i<m;i++)
      fscanf(fp,"%d%s%d%d%d",&(q+i)->num,(q+i)->name,&(q+i)->s[0],&(q+i)->s[1],&(q+i)->s[2]);
      }
      void myprint(struct mystu* q,int m,FILE *fp,FILE *fp1)
      {
      int i;
      for(i=0;i<m;i++)
      fprintf(fp1,"%d %s %d %d %d\n",(q+i)->num,(q+i)->name,(q+i)->s[0],(q+i)->s[1],(q+i)->s[2]);
      }
      double myave(struct mystu* q,int m,int j,FILE *fp,FILE *fp1)
      {
      double sum=0,ave;
      int i;
      for(i=0;i<m;i++)//第i个人
      sum+=(q+i)->s[j];
      ave=sum/m;
      return ave;
      }
      unsigned int mymax(struct mystu* q,int m,FILE *fp,FILE *fp1)
      {
      int* psum;
      int maxindex;
      int s=0;
      int i;
      int j;
      int tempmax=-1;
      psum=(int*)malloc(m*sizeof(int));
      for(i=0;i<2;i++)
      {
      s=0;//注意:累加器,计算器初始化成=0,连乘器=1。
      //特点注意:如果累加器,计算器、连乘器放在嵌套循环中时,一定要注意他们
      //所放置的位置【最外层循环外面,还是在中间???】
      for(j=0;j<3;j++)
      s+=(q+i)->s[j];
      *(psum+i)=s;
      }
      for(i=0;i<2;i++)
      {
      if(tempmax<*(psum+i))
      {
      tempmax=*(psum+i);
      maxindex=i;
      }
      }
      return maxindex;
      }
      void myprinti(struct mystu* q,int i,FILE *fp,FILE *fp1)
      {
      fprintf(fp1,"%d %s %d %d %d\n",(q+i)->num,(q+i)->name,(q+i)->s[0],(q+i)->s[1],(q+i)->s[2]);
      }


      IP属地:江苏3楼2015-01-06 10:01
      回复


        IP属地:江苏来自Android客户端4楼2015-09-01 15:33
        收起回复
          thunder://QUFodHRwOi8veGlhMS4xMjM0NWhkLmNvbS8lRTUlOTYlOUMlRTUlODklQTcvMjAxNS0xMC8wNS8lRTUlQTQlOEYlRTYlQjQlOUIlRTclODklQjklRTclODMlQTYlRTYlODElQkNEVkRTY3IlRTUlOUIlQkQlRTglQUYlQUQlRTQlQjglQUQlRTglOEIlQjElRTUlOEYlOEMlRTUlQUQlOTclRTklQTYlOTYlRTUlOEYlOTEucm12Ylpa


          IP属地:江苏5楼2015-10-23 11:29
          回复
            挖个坟


            IP属地:江苏来自iPhone客户端6楼2017-11-27 15:25
            收起回复