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); } |