2012年9月国家计算机二级C语言考试题库:C语言函数与运算符练习

版权申诉
0 下载量 98 浏览量 更新于2024-07-13 收藏 3.58MB PDF 举报
2012年9月的国家计算机二级C语言上机考试题库包含两部分题目,分别是整数处理函数和阶乘计算函数的实现与修改。 首先,第一个题目是关于整数处理函数`fun`的编写。该函数的目标是移除形参`n`所指向的数字中各位偶数,只保留奇数并将剩余部分保持原位重新组成一个数。函数原型为`void fun(unsigned long *n)`,通过以下步骤实现: 1. 初始化变量`x`为0,`i`为1,用于存储处理后的数。 2. 使用循环结构遍历`n`指向的每一位数字,通过`*n % 10`得到当前位的数字。 3. 判断当前位是否为偶数(`t % 2 != 0`),如果是奇数则将其加到`x`上,并将`i`更新为`i * 10`,以便后续保留位置。 4. 更新`n`指向的数值,除以10,去掉当前处理的位。 5. 循环结束后,将结果`x`通过形参`n`返回给调用者。 程序中,第一处填空应填写10,表示取模10得到个位;第二处填空应填写0,表示判断是否为奇数;第三处填空应填写`x`,因为`n`最后会指向新数。 第二个题目涉及的是阶乘计算函数`fun`,其目的是计算输入整数`n`的阶乘。原始代码存在两个错误: 1. 条件语句书写格式不正确,`if n == 0`应该写成`if (n == 0)`,确保括号匹配和语法正确。 2. 在`result *= n--`这一行,当`n > 1`时,递归调用`fun`后,`n`的值会被减1,因此需要先乘以`n`再递减,即`result *= n; n--;`。 修正后的代码如下: ```c double fun(int n) { double result = 1.0; if (n == 0) return 1.0; while (n > 1) { result *= n; n--; } return result; } ``` 这部分主要考察了函数设计、循环控制以及条件语句的理解和使用。 总结,这份2012年9月的C语言上机考试题库主要测试了考生对基础数据类型操作、条件判断、循环结构、函数调用以及数学逻辑等C语言核心知识点的掌握程度,同时要求考生具备代码调试和优化的能力。