C语言二级考试题库:100道上机题目解析
需积分: 3 187 浏览量
更新于2024-09-15
1
收藏 348KB TXT 举报
"这是一份针对二级C语言上机考试的题库,包含了100道题目,据称覆盖了大部分考试内容,甚至可能存在原题。题库中提供了两个编程题目,分别是C语言的‘C Spartan 01’问题和求阶乘的‘MODI1.C’问题。"
在C Spartan 01问题中,目标是编写一个函数`fun`,该函数接收一个无符号长整型指针`n`,用于处理输入的数字。函数的主要任务是将输入的数字倒序存储,即反转数字的位序。题目中已经给出了部分代码,有三个空格需要填写正确的内容。
首先,我们需要找到`*n % __1__`,这里应该填写10,因为我们需要获取数字的个位(即模10的余数)来开始位序反转的过程。
接着,`if (t % 2 != __2__)`检查数字是否为奇数,这里填写0,因为只有当个位不是偶数(即`t % 2`不等于0)时,我们才将其加入到结果`x`中,并且乘以当前的指数`i`。
最后,`*n = __3__`,这里是将`n`更新为去掉个位后的值,即`*n / 10`。因此,完整的代码应该是:
```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;
}
```
在MODI1.C问题中,我们有一个计算阶乘的函数`fun`,接受一个整型参数`n`,并返回`n!`的结果。为了确保安全,函数限制了`n`的范围在1到169之间,防止溢出。同样,这里也有两处需要填充的地方。
第一处`if (n == 0)`表示当`n`为0时,阶乘的结果为1,所以返回1.0。
第二处`result *= n--`,在这里`n`自减1后乘以`result`,逐步计算阶乘。完整的代码应为:
```c
double fun(int n) {
double result = 1.0;
if (n == 0)
return 1.0;
while (n > 1 && n < 170) {
result *= n--;
}
return result;
}
```
在主函数`main`中,用户输入一个整数`n`,然后调用`fun`函数计算阶乘并打印结果。注意,题目中给出的`f"..."`可能是误写,应该是`printf`的格式化字符串。
总结来说,这份题库包含了两个与数字操作相关的C语言编程题目,一个是数字位序反转,另一个是计算阶乘,这两个题目可以锻炼考生对指针操作、条件判断以及循环结构的理解和运用。
106 浏览量
2009-10-10 上传
2010-02-02 上传
2016-01-02 上传
2009-09-20 上传
点击了解资源详情
点击了解资源详情
2010-03-19 上传
hh547780140
- 粉丝: 0
- 资源: 5
最新资源
- Fisher Iris Setosa数据的主成分分析及可视化- Matlab实现
- 深入理解JavaScript类与面向对象编程
- Argspect-0.0.1版本Python包发布与使用说明
- OpenNetAdmin v09.07.15 PHP项目源码下载
- 掌握Node.js: 构建高性能Web服务器与应用程序
- Matlab矢量绘图工具:polarG函数使用详解
- 实现Vue.js中PDF文件的签名显示功能
- 开源项目PSPSolver:资源约束调度问题求解器库
- 探索vwru系统:大众的虚拟现实招聘平台
- 深入理解cJSON:案例与源文件解析
- 多边形扩展算法在MATLAB中的应用与实现
- 用React类组件创建迷你待办事项列表指南
- Python库setuptools-58.5.3助力高效开发
- fmfiles工具:在MATLAB中查找丢失文件并列出错误
- 老枪二级域名系统PHP源码简易版发布
- 探索DOSGUI开源库:C/C++图形界面开发新篇章