3.编一个程序,输入10个学生的学号、姓名、3门课程的成绩,求出总分最高的学生姓名并输出。      【解】类似上一程序,直接给出程序如下:    # include     # include     # define N 10    struct stu {    char no[10];    char name[20];    int score[3];    } students[N],*p, *maxp;   void main()     { char buf[120]; int maxs;    printf("输入%d个学生的编号、姓名、三门课程成绩 \n", N);    for(p= students;p< students+N;p++) {    scanf("%s", buf); strncpy(p -> no, buf, 9);    scanf("%s", buf); strncpy( p -> name, buf,19);    scanf("%d%d%d",&p -> score[O], &p -> score[1], &p ->  score[2]);    }     for(maxp= p =students, maxs=-1; p< students+N; p++)     if( p -> score[0] + p -> score[1]+p -> score[2]> maxs) {    maxp=p;maxs=p ->score[0]+p -> score[1]+p ->score[2];    }    printf("最高总分的学生是%s他的总分是 %d \n", maxp -> name, maxs);    }  
     4.编一个程序,输入下列学生成绩表中的数据,并用结构体数组存放,然后统计并输出三门课程的名称和平均分数。    name  foxbase pascal    c    wang  98.0     87.0    77.0    qian  90.5     91.0    88.0    sun   74.0     77.5    66.5    li    84.5     64.5    55.0      【解】类似上一程序,直接给出程序如下:    # include     # include     # define N 100    struct stu {    char namep[20];     int foxbase;    int pascal;    int c;    } students[N], *p;    void main ()     { int n, sf, sb, sc;    char buf[120];    printf("输入n(< %d) ! \n", N);    do {    scanf("%d", &n);    if(n>0 && n  printf("输入 n不合理! 请重新输入! \n");     } while(1);     printf("输入%d个人的姓名、Foxbase成绩、Pascal成绩、C成绩 \n", n);     for( p= students;p< students+n; p++);    scanf("%s",buf );strncpy(p -> name, buf, 19);     scanf("%d%d%d", &p -> foxbase,&p -> pascal,&p -> c)     }     sf=sb=sc =0;      for( p=students; p   sf+= p -> foxbase; sb+= p -> pascal; sc+= p -> c;     }     printf("Foxbase:%.2f \t Pascal:%.2f \t c:%.2f \n",  (float)sf/n,(float)sb/n,(float)sc/n);     } |