C语言二级考试原题解析:去除偶数位
需积分: 9 47 浏览量
更新于2024-08-01
收藏 991KB DOC 举报
"C2机试 二级考试必备 原题"
这篇资源主要涉及的是C语言编程题目,其中包含了两个具体的问题。第一个问题是关于处理一个无符号长整型变量(`unsigned long`),目的是移除其中所有偶数位上的数字,只保留奇数位上的数字。第二个问题是一个计算阶乘的函数,需要修复程序以正确计算整数的阶乘。
首先,我们分析第一个问题。给出的源程序中有一个名为`fun`的函数,它的作用是接收一个无符号长整型指针`n`,并根据输入的数值重新构造一个新的数,新数仅包含原数中奇数位的数字。以下是修复后的代码段:
```c
void fun(unsigned long *n)
{
unsigned long x = 0, i;
int t;
i = 1;
while (*n)
{
t = *n % 10; // 第一处填10,取个位数
if (t % 2 != 0) // 第二处填0,判断是否为奇数
{
x = x + t * i;
i = i * 10;
}
*n = *n / 10; // 无论是否满足条件,都要移除最低位
}
*n = x; // 第三处填x,将新数赋值给n
}
```
在`main`函数中,用户被要求输入一个0到100000000之间的非负数,然后调用`fun`函数进行处理,并打印结果。
接下来是第二个问题,涉及到的源程序片段是一个计算阶乘的函数`fun`。这个函数应该接受一个整数`n`并返回`n!`。原程序中存在错误,我们需要找到并修复它。以下是修正后的代码:
```c
double fun(int n)
{
double result = 1.0;
for (int i = 1; i <= n; ++i)
{
result *= i;
}
return result;
}
```
在这个修复的版本中,我们使用一个`for`循环从1累乘到`n`,并将结果存储在`result`变量中。最后返回`result`作为阶乘的结果。
这两个问题都属于基础的C语言编程题,它们考察了对整数操作、条件判断、循环控制以及函数的理解。在准备C2级别的机试时,掌握这类问题的解决方法是非常重要的。
2021-10-11 上传
2021-10-04 上传
2012-11-11 上传
2021-10-13 上传
2021-10-09 上传
jash1988
- 粉丝: 0
- 资源: 1
最新资源
- SSM Java项目:StudentInfo 数据管理与可视化分析
- pyedgar:Python库简化EDGAR数据交互与文档下载
- Node.js环境下wfdb文件解码与实时数据处理
- phpcms v2.2企业级网站管理系统发布
- 美团饿了么优惠券推广工具-uniapp源码
- 基于红外传感器的会议室实时占用率测量系统
- DenseNet-201预训练模型:图像分类的深度学习工具箱
- Java实现和弦移调工具:Transposer-java
- phpMyFAQ 2.5.1 Beta多国语言版:技术项目源码共享平台
- Python自动化源码实现便捷自动下单功能
- Android天气预报应用:查看多城市详细天气信息
- PHPTML类:简化HTML页面创建的PHP开源工具
- Biovec在蛋白质分析中的应用:预测、结构和可视化
- EfficientNet-b0深度学习工具箱模型在MATLAB中的应用
- 2024年河北省技能大赛数字化设计开发样题解析
- 笔记本USB加湿器:便携式设计解决方案