南开大学计算机二级C语言上机题库与编程练习详解

需积分: 9 7 下载量 76 浏览量 更新于2024-10-20 收藏 60KB DOC 举报
南开大学计算机二级C语言考试的上机题库包含两道题目,分别是改错题和编程题。以下是这两道题目的详细解答及知识点讲解。 **改错题1:查找质因子程序** 该题目要求考生改正一个计算整数质因子的程序。程序的目标是找出给定整数k的所有质因子。原程序存在两个主要错误: 1. `IsPrime` 函数声明末尾的分号应移除,使其成为一个完整函数定义,如下: ```c int IsPrime(int n); ``` 2. 在`for`循环中的条件判断语句有误,应使用`if (n % i == 0)`而不是`if !(n % i)`,因为我们需要检查n是否能被i整除,修改后如下: ```c for(i = 2; i < n; i++) { if (n % i == 0) // 修改此处 { m = 0; break; } } ``` 修复这两个错误后,程序将能正确找到并输出指定整数k的所有质因子。 **编程题1:统计低于平均分的人数与分数** 题目要求编写一个函数`fun`,计算一个包含m个成绩的数组中低于平均分的人数,并将这些分数放入`below`数组中。首先,我们需要实现以下步骤: 1. 初始化:在函数`fun`中,设置一个计数器变量`k=0`和一个浮点型变量`aver=0`来计算平均分。 2. 计算平均分:遍历`score`数组,累加所有成绩,然后除以数组长度`m`得到平均分。 3. 检查并计数:再次遍历`score`数组,如果当前分数小于平均分,增加计数器`k`并将其添加到`below`数组中。这里需要注意,需要先检查分数是否小于平均分,而不是是否能被平均分整除。 4. 返回结果:函数结束后,返回计数器`k`作为低于平均分的人数。 下面是修正后的`fun`函数实现: ```c int fun(int score[], int m, int below[]) { int i, k = 0; float aver = 0; for (i = 0; i < m; i++) { aver += score[i]; } aver /= m; for (i = 0; i < m; i++) { if (score[i] < aver) { k++; below[k-1] = score[i]; // 注意数组下标从0开始 } } return k; } ``` 通过这些步骤,函数将正确地统计并返回低于平均分的人数及对应的分数。 以上是两道题目涉及的关键知识点,考生在准备二级C语言考试时,务必熟悉基本语法、流程控制和函数设计,以及如何处理输入输出和数据结构的使用。理解并解决这类题目是提升编程技能和考试通过率的关键。