C语言考试上机题解析:去除偶数位
需积分: 9 159 浏览量
更新于2024-07-25
1
收藏 1.16MB DOC 举报
"此资源包含两套C语言编程题目,主要针对二级C语言上机考试的复习,涵盖了处理数字位操作和计算阶乘的函数编写。"
第一部分:去除偶数位数字的题目详解
在给定的程序中,函数`fun`的目标是创建一个新的数,该数由原数中各位上的奇数构成,且保持原有的顺序。具体实现方法如下:
1. 定义一个无符号长整型变量`x`用于存储新数,初始化为0。
2. 使用`i`作为位权,初始值为1,每次循环时乘以10以递增位权。
3. 在循环内,首先获取当前数`*n`的个位数字,这可以通过`*n % 10`实现,因此第一处下划线应填写`10`。
4. 接下来,检查这个个位数字是否为奇数,即`t % 2 != 0`,因此第二处下划线应填写`0`。
5. 如果个位数字是奇数,将它与当前的位权`i`相乘,然后累加到`x`上。
6. 更新原始数`*n`,将其除以10,以便在下次循环中处理下一个位。
7. 循环结束后,新数`x`应当被赋值回`*n`,因此第三处下划线应填写`x`。
经过以上步骤,程序将能够正确地去除原数中所有偶数位的数字,并保留奇数位,形成新的数字。
第二部分:计算阶乘的题目详解
在第二个程序中,函数`fun`的目标是计算输入整数`n`的阶乘。错误在于条件判断和乘法操作的实现。正确的实现如下:
1. 定义结果变量`result`,初始值为1.0,用于存储阶乘结果。
2. 首先检查`n`是否为0,因为0的阶乘定义为1,所以此处的错误是缺少了等号,应改为`if (n == 0)`。
3. 接下来的`while`循环用于计算阶乘。错误在于条件`while (n > 1 && n < 170)`,这里应该去掉对`n < 170`的限制,因为阶乘只关注`n > 0`的情况。所以正确版本应为`while (n > 1)`。
4. 在循环体内,应当将`result`乘以`n`,然后递减`n`。错误在于`result *"`,应改为`result *= n`,表示`result`和`n`的乘积赋值回`result`。
修复这两个错误后,程序将能正确计算输入整数`n`的阶乘,并输出结果。
总结,这两道题目主要考察了C语言的基础知识,包括位运算、条件判断、循环控制以及数学函数的实现。熟悉这些基本概念和操作对于通过二级C语言上机考试至关重要。
1123 浏览量
2009-02-21 上传
247 浏览量
348 浏览量
226 浏览量
469 浏览量
190 浏览量
274 浏览量
feimczjf
- 粉丝: 1
- 资源: 6
最新资源
- 吃豆人3000
- CC107_Sat7301230Group8
- aabbbb_ctdl_
- 易语言-易语言读取系统cookies目录
- KnpMenu:PHP的菜单库
- C#实现获取本地电脑硬件信息工程项目
- aramacademy:ARAM学院是英雄联盟(AOL)的首要ARAM独家统计跟踪网站
- AquaDataStudio7中文免安装版
- Graphics:是用于OpenGL的小型2D渲染库
- iss_spotter-
- sweyer:使用Flutter构建的音乐播放器
- zookeeper-3.4.9
- 易语言-易语言实现大文件加密
- 毕业设计+wumpus世界+python的三种实现方式
- v2ex:热帖收藏夹,V2EX 数据从15年4月份开始收集,HN 从 2020-08-27 开始
- SyncMarks-Extension:Firefox,Edge或Chromium衍生产品的浏览器Web扩展,可将书签与私有后端同步