100套计算机二级C语言上机题库与答案详解

4星 · 超过85%的资源 需积分: 0 321 下载量 70 浏览量 更新于2024-07-18 67 收藏 9.81MB PDF 举报
计算机二级C语言上机题库涉及了多种类型的题目,旨在测试考生对C语言基础和编程能力的理解。以下是对部分题目类型的详细解析: 1. 填空题: - 第1题考查递归算法实现阶乘。`FUN`函数需要计算10的阶乘,根据递归逻辑,当`n`不满足基本情况(n>1或1<n),应调用自身并将n减1(n-1)作为新的参数。当n达到基本情况(1)时,返回1。因此,填空部分应为: ```c if(n > 1 || 1 < n) { return (n * fun(n - 1)); } return 1; // 或者写成 return 1L; 表示长整型 ``` 2. 改错题: - 程序目的是找出一个整数的所有素数因子。错误在于`IsPrime`函数的定义,`IsPrime`的参数类型应保持一致,所以第1处应修改为`IsPrime(int n)`。此外,原始代码的条件判断有误,应该使用`n % i == 0`而不是`!(n % i)`,因为后者会返回非零值表示真。因此,第2处修改为`if (n % i == 0)`。正确代码如下: ```c IsPrime(int n) { int i, m; m = 1; for (i = 2; i < n; i++) { if (n % i == 0) { m = 0; break; } } return m; } ``` 3. 编程题: - 要求编写一个函数`fun`,计算数组`score`中所有元素的平均分,并找出低于平均分的成绩并存储在`below`数组中。首先,需要计算平均分,然后遍历数组,对每个元素与平均分比较。如果成绩小于平均分,将其添加到`below`数组。这需要考虑数组操作和临时变量来存储平均分。示例代码可能如下: ```c double average; for (int i = 0; i < M; i++) { average += score[i]; } average /= M; int belowCount = 0; int below[M]; // 假设事先已定义好数组大小 for (int i = 0; i < M; i++) { if (score[i] < average) { below[belowCount++] = score[i]; } } ``` 以上是计算机二级C语言上机题库的部分内容概要,包括递归函数、错误修复以及基本的数组处理和条件判断。这些题目涵盖了C语言基础语法、数据结构和算法等核心知识点,对于提高编程技能和理解C语言特性具有实际价值。