计算机二级C语言考试真题解析:去除偶数位数字

4星 · 超过85%的资源 需积分: 6 49 下载量 164 浏览量 更新于2024-07-30 3 收藏 1.78MB DOC 举报
"这是一个关于计算机二级C语言考试的试题库,包含了解题思路和代码修改的题目。" 在计算机二级C语言考试中,编程题目经常涉及到对数据的处理和算法的应用。这里有两个具体的题目实例。 第一个题目是关于处理整数的。函数`fun`的目的是从一个无符号长整型数中去除所有偶数位上的数字,只保留奇数位的数字,并保持原数的高位到低位顺序。解题的关键在于理解如何通过取模运算 `%` 来获取数字的个位,并用条件语句来判断该位是否为奇数。在给定的程序中: 1. `t=*n%10;` 这一行是用来获取`n`的最低位数字,因为模10的操作可以得到个位数,所以填入10是正确的。 2. `if(t%2!=0)` 这里的条件是为了检查当前位数字是否为奇数,如果`t%2`不等于0,则表示`t`是奇数,因此填入0是合适的。 3. `*n=x;` 在循环结束后,新数`x`应该被赋值给`n`,以便通过指针`n`返回新的数字,因此填入`x`是正确的。 第二个题目涉及到计算阶乘。函数`fun`应该计算并返回输入整数`n`的阶乘。题目中指出,当`n`为5时,输出应该是120。然而,给定的代码存在错误。正确的实现应该在`if`语句中检查`n`是否为0,而不是用`ifn==0`(缺少了等号),所以应改为`if (n == 0)`。同时,`while`循环的条件应该是`n > 1`,因为一旦`n`为1,就不再需要乘以任何数,阶乘计算结束。因此,修正后的代码片段应为: ```c if (n == 0) return 1.0; while (n > 1) ``` 这两个题目都要求考生具备基本的C语言语法知识,包括指针操作、条件语句、循环以及数学运算。在实际编程考试中,考生需要仔细阅读题目要求,理解并正确实现所描述的功能。