C语言考试上机题解析:去除偶数位
需积分: 3 153 浏览量
更新于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语言上机考试至关重要。
2018-02-23 上传
2023-09-26 上传
2023-09-20 上传
2023-05-10 上传
2023-08-31 上传
2024-03-25 上传
2024-03-05 上传
2023-06-03 上传
![](https://profile-avatar.csdnimg.cn/150c10232b0a42d5bc6631017d69a5b3_feimczjf.jpg!1)
feimczjf
- 粉丝: 1
- 资源: 6
最新资源
- AirKiss技术详解:无线传递信息与智能家居连接
- Hibernate主键生成策略详解
- 操作系统实验:位示图法管理磁盘空闲空间
- JSON详解:数据交换的主流格式
- Win7安装Ubuntu双系统详细指南
- FPGA内部结构与工作原理探索
- 信用评分模型解析:WOE、IV与ROC
- 使用LVS+Keepalived构建高可用负载均衡集群
- 微信小程序驱动餐饮与服装业创新转型:便捷管理与低成本优势
- 机器学习入门指南:从基础到进阶
- 解决Win7 IIS配置错误500.22与0x80070032
- SQL-DFS:优化HDFS小文件存储的解决方案
- Hadoop、Hbase、Spark环境部署与主机配置详解
- Kisso:加密会话Cookie实现的单点登录SSO
- OpenCV读取与拼接多幅图像教程
- QT实战:轻松生成与解析JSON数据