全面掌握:计算机等级考试二级C语言上机题库解析

4星 · 超过85%的资源 需积分: 9 14 下载量 149 浏览量 更新于2024-07-30 收藏 795KB DOC 举报
"这是一个针对计算机等级考试二级C语言的上机题库,包含了100套题目,每套包括三类题目:程序填空、程序修改和程序设计。考生在实际考试中会随机抽取一套进行作答。为了确保万无一失,考生需要全面理解和掌握所有题库内容。" 在提供的部分题目中,我们有两个具体的编程问题: 1. 第一个问题是关于C语言的函数,`fun` 函数的目的是从给定的无符号长整型数值中去除所有偶数位数字,只保留奇数位数字,并保持原有的高位到低位顺序。解题思路如下: - 第一处下划线应填写 `10`,因为 `%10` 是用来获取数值的个位数。 - 第二处下划线应填写 `0`,用以判断取模结果是否为偶数,`t%2!=0` 表示判断t是否为奇数。 - 第三处下划线应填写 `x`,因为最终需要将处理后的新数通过形参`n`返回。 修正后的代码段: ```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; } ``` 2. 第二个问题是关于计算阶乘的`fun`函数。给定的源程序在计算阶乘时存在错误,需要改正以避免溢出和确保只处理正整数。解题思路如下: - 第一处下划线应该将条件语句改为 `if (n == 0)`,因为0的阶乘定义为1。 - 第二处下划线的条件应去除,因为计算阶乘时不需要限制n的值在1和170之间。 修正后的代码段: ```c double fun(int n) { double result = 1.0; if (n == 0) return 1.0; while (n > 1) { result *= n; n--; } return result; } ``` 这两个问题都需要对C语言的基本语法和逻辑有深入的理解,包括指针、条件判断、循环和数学运算等。对于计算机等级考试的考生来说,熟练掌握这些知识点至关重要。