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(n0 && n<N ) BREAK;
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<STUDENTS+N; 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);
}