
C语言二级考试原题解析:去除偶数位
下载需积分: 9 | 991KB |
更新于2024-08-01
| 20 浏览量 | 举报
收藏
"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级别的机试时,掌握这类问题的解决方法是非常重要的。
相关推荐






jash1988
- 粉丝: 0
最新资源
- Windows平台VC++视频播放器源码分享
- 全面酒店管理系统解决方案及其完整开发文档
- 实用JSP教学系统模块功能详解
- Hibernate In Action 1.2.4中文版详解
- 宠物诊所信息管理系统设计与实现
- 全面覆盖1800题数据结构练习与解答
- Java设计模式深入解析
- C语言实现ini文件读写操作方法
- 扩展CakePHP博客教程:实现分类功能
- VS2005工具栏操作与功能快速入门
- 基本算法背后的计算方法解析
- ASP.NET标准教程:深入浅出学习指南
- 掌握Windows API:初级教程的实践指南
- 清华大学郑莉C++讲稿深度解析
- 2008授权版php168整站系统深度定制与优化
- 清华大学数据结构全套教学资源(课件、习题及答案)C++版
- UartAssist:功能全面的串口调试工具
- CMPP协议的客户端实现详解
- Linux嵌入式交叉编译工具ARM-ELF-Tools 20030314(二)
- 深入探索C语言中的汇编语言应用
- ASP.NET无限级分类实现详解
- 实现Excel类似Firefox页签的文件名显示功能
- XP用户享受Vista界面的轻量仿真器XptoVista
- 掌握Struts2.0标签使用技巧