|
题目: 给定程序中, N名学生的数据已存入类型为STU的结构体数组, 函数fun的作用是:计算出N名学生的平均成绩, 将高于平均分的学生的学号存入p所指的存储单元中, 高于平均分的人数由函数值返回。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在文件BLANK1.C中, 不得增行或删行, 也不得更改程序的结构 ! 考点:数据类型与基本运算 BLANK1.C代码: - #include <stdio.h>
- #include <string.h>
- #define N 6
- typedef struct
- { char num[5];
- double s;
- } STU;
-
- int fun(STU x[N], char p[][5])
- {
- int n=0,i;
- double ave=0.0;
- for(i=0; i<N; i++)
- /**********found**********/
- ave+= __x[i].s__(1)____;
- ave/=N;
- for(i=0; i<N; i++)
- /**********found**********/
- if(x[i].s __ave__(2)____)
- {
- strcpy(p[n],x[i].num);
- /**********found**********/
- ___n++_(3)____;
- }
- return(n);
- }
- main()
- { int i,k;
- STU a[N]={ "z100",78,"z101",92,"z102",77,"z103",87,"z104",66,"z105",85};
- char b[N][5];
- k=fun(a,b);
- for(i=0; i<k;i++)
- puts(b[i]);
- }
复制代码
试题解读: (1) 根据题意, STU结构体中, num数组存放学生学号, 变量s存放学生成绩。fun()函数需要计算N个学生的平均成绩ave。第一个for循环将x中N名学生的成绩累加到ave, 即ave += x.s, 循环结束后再除以N。 (2) fun()函数求得N名学生的平均值后, 再次遍历数组x, 将成绩高于平均值ave的学生学号存放到指针p指向的存储单元中, 所以if语句中需要判断x.s > ave。 (3) n的初值为0, 每次将成绩高于平均值ave的学生学号使用strcpy拷贝到p指向的第n个存储单元后, 需要对n自增1, 表示下一个可用的存储单元索引, 也表示当前存放到p中的学生学号的个数, 最后会作为函数返回值返回。 参考答案: (1) x.s (2) > ave (3) n++
|