计算机二级考试题目解析:去除偶数位

需积分: 9 1 下载量 99 浏览量 更新于2024-07-28 收藏 991KB DOC 举报
"计算机二级考试相关题目及解题思路" 计算机二级考试主要涵盖计算机基础知识、编程语言、数据库管理、网络技术等多个方面。在这个题目中,我们有两个编程任务,一个是C语言实现的功能修改,另一个是计算阶乘。 首先,我们来看第一个题目,这是一个C语言的函数修改题。函数`fun`的目标是去除输入数值`n`中所有偶数位上的数字,只保留奇数位,然后返回新的数值。解题的关键在于理解题意和正确地处理数值的每一位。 ```c void fun(unsigned long *n) { unsigned long x = 0, i; // x用于存储新数,i作为权重 int t; i = 1; while (*n) // 当n不为0时继续循环 { t = *n % 10; // 第一处填10,获取n的个位数 if (t % 2 != 0) // 第二处填0,判断个位数是否为奇数 { x = x + t * i; // 如果是奇数,添加到新数x中 i = i * 10; // 为了下一次添加进位 } *n = *n / 10; // 移除最低位数字 } *n = x; // 第三处填x,将新数赋值回n } ``` 在`main`函数中,用户输入一个数`n`,然后调用`fun`函数处理,最后输出处理后的新数。 接下来是第二个题目,涉及计算阶乘的C语言函数`fun`。给定的代码中,我们需要计算`n!`,即`n`的阶乘。题目指出原代码有错误,我们需要找到并修正它。 ```c double fun(int n) { double result = 1.0; for (int i = 1; i <= n; ++i) { result *= i; // 修正后的计算阶乘的循环 } return result; } ``` 原来的代码没有提供,但根据题目的要求,我们假设原始版本可能缺少了初始化`result`为1.0或者阶乘计算的循环。修正后的代码中,我们初始化`result`为1.0,然后用`for`循环从1累乘到`n`,最后返回结果。 这两个题目考察了C语言的基本语法、条件判断、循环操作以及数学运算。对于计算机二级考试的备考者来说,熟练掌握这些基本概念和技能是非常重要的。在实际考试中,可能会遇到类似的编程题,需要考生具备阅读和修改代码的能力。因此,不断练习编程题目,理解和应用基本算法,是提高考试成绩的关键。