2013年全国计算机二级C语言考试题库解析

需积分: 0 1 下载量 35 浏览量 更新于2024-06-28 1 收藏 169KB PDF 举报
"2013年全国计算机二级C语言上机考试题库" 这份资源包含的是2013年全国计算机二级C语言考试的上机试题集,共有100套题目,旨在帮助考生熟悉考试格式和提升编程能力。试题涉及的编程任务包括但不限于处理数字的逻辑操作和实现特定数学计算。 第一套题目中,给出的函数`fun`的目标是移除输入数值(由`n`指向)中所有偶数位上的数字,只保留奇数位,然后将结果以原顺序返回。代码中存在三处需要填写的内容: 1. 第一处:`*n%__1__`,这里要用`10`来取模,以获取`n`的个位数字。 2. 第二处:`if(t%2!=__2__)`,判断`t`是否为奇数,因此`__2__`应填`0`,表示判断`t`是否能被2整除,即是否为偶数。 3. 第三处:`*n=__3__;`,这里需要将新计算出的数`x`赋值给`n`,所以`__3__`应填`x`。 改正后的`fun`函数应该如下所示: ```c void fun(unsigned long *n) { unsigned long x = 0, i; int t; i = 1; while (*n) { t = *n % 10; if (t % 2 != 0) { x = x + t * i; i = i * 10; } *n = *n / 10; } *n = x; } ``` 第二套题目中,函数`fun`的目的是计算输入整数`n`的阶乘。然而,原始代码存在错误。修复后的`fun`函数应该是: ```c double fun(int n) { double result = 1.0; if (n == 0) { return 1.0; } while (n > 1 && n < 170) { result *= n--; } return result; } ``` 修正点在于`if`条件语句的语法错误,需要添加括号使其正确,即`if (n == 0)`。同时,`while`循环的条件也需要修正,确保在`n`大于1且小于170时执行,因为阶乘可能会导致溢出,所以限制`n`的值以避免大数问题。 这些题目覆盖了C语言的基本语法、逻辑操作、循环控制以及数学计算,是备考全国计算机二级C语言考试的重要练习材料。考生可以通过解答这些题目来提高自己的编程能力和对C语言的理解。