C语言考试上机题解析:去除偶数位
需积分: 9 62 浏览量
更新于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 上传
2009-02-21 上传
2023-09-26 上传
2023-09-20 上传
2024-10-28 上传
2024-10-28 上传
2024-10-28 上传
106 浏览量
feimczjf
- 粉丝: 1
- 资源: 6
最新资源
- Raspberry Pi OpenCL驱动程序安装与QEMU仿真指南
- Apache RocketMQ Go客户端:全面支持与消息处理功能
- WStage平台:无线传感器网络阶段数据交互技术
- 基于Java SpringBoot和微信小程序的ssm智能仓储系统开发
- CorrectMe项目:自动更正与建议API的开发与应用
- IdeaBiz请求处理程序JAVA:自动化API调用与令牌管理
- 墨西哥面包店研讨会:介绍关键业绩指标(KPI)与评估标准
- 2014年Android音乐播放器源码学习分享
- CleverRecyclerView扩展库:滑动效果与特性增强
- 利用Python和SURF特征识别斑点猫图像
- Wurpr开源PHP MySQL包装器:安全易用且高效
- Scratch少儿编程:Kanon妹系闹钟音效素材包
- 食品分享社交应用的开发教程与功能介绍
- Cookies by lfj.io: 浏览数据智能管理与同步工具
- 掌握SSH框架与SpringMVC Hibernate集成教程
- C语言实现FFT算法及互相关性能优化指南