C语言编程:去除偶数位数字的试题与阶乘计算函数修正
需积分: 0 178 浏览量
更新于2024-07-31
收藏 1.56MB DOC 举报
"这是一个关于计算机二级C语言考试题库的练习,包含了两个编程题目,一个是去除数字中偶数位,另一个是计算阶乘。"
在第一个编程题目中,我们需要完成一个函数`fun`,该函数接收一个无符号长整型指针`n`,其目的是从输入的数字中移除所有偶数位上的数字,只保留奇数位。题目给出了部分代码,我们需要填写三处下划线处的内容。
第一处下划线处:`t=*n%__1__;` 这里的目的是获取当前数字的个位数,因此填入 `10`,完整语句为 `t=*n%10;`。
第二处下划线处:`if(t%2!=__2__)` 这里是为了检查个位数是否为奇数,因此填入 `0`,完整条件为 `if(t%2!=0)`。
第三处下划线处:`*n=__3__;` 在循环结束后,将处理后的新数`x`赋值回`n`,所以填入 `x`,完整语句为 `*n=x;`。
这个函数的工作原理是遍历输入数字的每一位,如果是个位数为奇数,就将其添加到新数`x`中,并更新指数`i`以便保留位置信息。最后,原指针`n`指向的新数就是处理后的结果。
第二个编程题目中,我们需要修正`fun`函数,使其能正确计算阶乘。给定的源程序中,`fun`函数有一个逻辑错误,需要更正。
在错误的地方,`ifn==0`应该改为`if (n == 0)`,因为条件判断语句需要使用括号来确保正确的语法。同时,`while(n>1&&n<170)`这部分看起来是为了防止溢出,但在这里并不适用,因为题目要求计算的阶乘不会超过170!,所以可以直接去掉这段代码,简化为`while(n>1)`。
修正后的`fun`函数应该如下所示:
```c
double fun(int n) {
double result = 1.0;
if (n == 0)
return 1.0;
while (n > 1) {
result *= n;
n--;
}
return result;
}
```
这样,当调用`fun(5)`时,将会正确地输出`5!`的结果,即`120.000000`。
这两个题目都涉及到基本的C语言编程技能,包括指针操作、条件判断、循环控制以及数学运算。熟悉这些概念对于通过计算机二级C语言考试至关重要。
2011-03-23 上传
2021-09-30 上传
2021-09-30 上传
2021-09-30 上传
2021-10-10 上传
2011-09-07 上传
2021-10-27 上传
jiajia0512
- 粉丝: 0
- 资源: 3
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析