C++编程:去除偶数位数字,计算阶乘问题解析
需积分: 3 153 浏览量
更新于2024-07-26
收藏 1.09MB DOC 举报
“计算机题库,包含C++编程题目解析及函数修复建议。”
在这个计算机题库中,我们有两个编程题目,都是关于数值处理的。第一个题目是C++编程题,涉及的函数`fun`旨在从一个无符号长整型变量中移除所有偶数位上的数字,只保留奇数位数字,并保持原有顺序。根据提供的解题思路,我们可以分析以下内容:
1. 第一处空格应该填写`10`,因为`t=*n%10`是为了获取当前数字的个位数。当我们对一个整数进行模运算10的操作时,可以得到它的个位数。
2. 第二处空格应填写`0`,条件`t%2!=0`用于检查这个个位数是否为奇数,即是否不能被2整除。
3. 第三处空格应填写`x`,这是为了让最终处理后的新数通过形参`n`返回。在循环结束后,`*n`应该被赋值为`x`,即新构建的数。
完整的`fun`函数代码应该是这样的:
```c
void fun(unsigned long *n) {
unsigned long x = 0, i;
int t;
i = 1;
while (*n) {
t = *n % 10;
if (t % 2 != 0) {
x = x + t * i;
i = i * 10;
}
*n = *n / 10;
}
*n = x;
}
```
第二个题目同样是一个C++编程题,要求计算阶乘。提供的程序中,`fun`函数用于计算`n!`,但是存在错误。按照解题思路,我们需要对错误进行修正:
1. 第一处错误是缺少了等号,应该写成`if (n == 0)`,表示当n等于0时返回1。
2. 而第二处错误在于`while`循环条件,应当去掉`n<170`,因为阶乘计算只关心`n`的值是否大于1,而不需要限制在170以内。
修正后的`fun`函数代码如下:
```c
double fun(int n) {
double result = 1.0;
if (n == 0)
return 1.0;
while (n > 1)
result *= n--;
return result;
}
```
这两个题目都是基础的算法实现,对于学习C++编程和理解数值处理的初学者来说非常有帮助。通过解决这些题目,不仅可以提高编程技巧,还能加深对整数运算和控制流的理解。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2017-10-29 上传
2018-04-12 上传
2022-12-21 上传
asdj
- 粉丝: 0
- 资源: 1
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查