找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 32|回复: 0

二级C语言试题解读:统计N名学生的成绩

[复制链接]

14

主题

8

回帖

92

积分

注册会员

积分
92
发表于 2026-2-26 13:05:24 | 显示全部楼层 |阅读模式
题目:
给定程序中, N名学生的数据已存入类型为STU的结构体数组, 函数fun的作用是:计算出N名学生的平均成绩, 将高于平均分的学生的学号存入p所指的存储单元中, 高于平均分的人数由函数值返回。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在文件BLANK1.C中, 不得增行或删行, 也不得更改程序的结构 !
考点:数据类型与基本运算
BLANK1.C代码:
  1. #include <stdio.h>

  2. #include <string.h>

  3. #define N 6

  4. typedef struct

  5. { char num[5];

  6.   double s;

  7. } STU;



  8. int fun(STU x[N], char p[][5])

  9. {

  10.   int n=0,i;

  11.   double ave=0.0;

  12.   for(i=0; i<N; i++)

  13. /**********found**********/

  14.         ave+= __x[i].s__(1)____;

  15.   ave/=N;

  16.   for(i=0; i<N; i++)

  17. /**********found**********/

  18.        if(x[i].s __ave__(2)____)

  19.          {

  20.              strcpy(p[n],x[i].num);

  21. /**********found**********/

  22.               ___n++_(3)____;

  23.          }

  24.     return(n);

  25. }

  26. main()

  27. { int i,k;

  28. STU a[N]={ "z100",78,"z101",92,"z102",77,"z103",87,"z104",66,"z105",85};

  29. char b[N][5];

  30. k=fun(a,b);

  31. for(i=0; i<k;i++)

  32.         puts(b[i]);

  33. }
复制代码

试题解读:
(1) 根据题意, STU结构体中, num数组存放学生学号, 变量s存放学生成绩。fun()函数需要计算N个学生的平均成绩ave。第一个for循环将xN名学生的成绩累加到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++

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|郎哥嵌入式编程社区 ( 鲁ICP备15001146号-5 )

GMT+8, 2026-3-10 18:41 , Processed in 0.013369 second(s), 19 queries .

快速回复 返回顶部 返回列表