C语言二级考试题库:100道上机题目解析
需积分: 3 9 浏览量
更新于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语言编程题目,一个是数字位序反转,另一个是计算阶乘,这两个题目可以锻炼考生对指针操作、条件判断以及循环结构的理解和运用。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2010-02-02 上传
2011-12-11 上传
2016-01-02 上传
2009-09-20 上传
2010-03-19 上传
2010-07-09 上传
hh547780140
- 粉丝: 0
- 资源: 5
最新资源
- 012-desafio-componentizando-aplicacao
- jhm_chat.rar_网络编程_C/C++_
- A Free Text-To-Speech System-开源
- NVIDIA VGPU 14.0 ESXI 6.7主机驱动
- backtrader:用于交易策略的Python回测库
- sentiment-analysis-project:Udacity IMDB项目的项目
- Open C6 Project-开源
- Checking-ATM-Card-Number
- max-and-min.rar_Visual_C++_
- 自制程序
- :rocket:建立简单快速的跨平台多人游戏-C/C++开发
- atari:使用JavaScript编码的Atari Breakout
- challenge-4--Ignite-React:Desafio 04训练营的入门级Ignite,commig对象的应用程序Javascript para Typescript e de Class Components para Function Components
- WirelessOrder.rar_酒店行业_Java_
- IW:内部波动
- 纪事:使用Slim Framework构建的仅公开附加账本微服务