C++编程:去除偶数位数字,计算阶乘问题解析
需积分: 3 115 浏览量
更新于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++编程和理解数值处理的初学者来说非常有帮助。通过解决这些题目,不仅可以提高编程技巧,还能加深对整数运算和控制流的理解。
2022-12-21 上传
2021-05-02 上传
2017-10-29 上传
2018-04-12 上传
asdj
- 粉丝: 0
- 资源: 1
最新资源
- 缓冲区溢出深入剖析(快速了解
- BM String Match
- cmd常用命令大全大家很关心不啊
- surfer中文版基础教程
- More Effecitve C++
- Android教程 很好的入门教程
- JSP数据库编程指南,高清,非影印版
- seam+in+action.pdf 中文参考文档
- java学习资料()
- Prentice.Hall.JBoss.Seam.Simplicity.and.Power.Beyond.Java.EE.Apr.2007
- JBoss4.0.pdf 参考文档
- 5分钟熟悉Maven之中文版官方文档翻译
- Git Phrase Book
- struts电子书(学习struts必备)
- 生命线—质量管理手册
- 高质量C++C 编程指南