计算机二级考试题库:C语言与阶乘问题解析
需积分: 10 104 浏览量
更新于2024-07-23
收藏 1.47MB DOC 举报
"计算机二级题库,包含最新C语言上机试题和求阶乘的程序修正"
在计算机二级考试中,编程题目通常是考核的重点之一。这里我们有两个编程问题,一个是涉及C语言的数字处理,另一个是关于计算阶乘的函数。
首先,让我们分析第一个题目,这是一个C语言的函数fun,它的功能是提取输入数中所有奇数位上的数字,并将这些数字按原顺序组成一个新的数。题目给出的代码中有三个空格需要填写。根据解题思路:
1. 第一处空格:我们需要获取当前数字的个位,可以使用模运算 `%` 来实现。由于我们是要获取个位,而十进制数的个位是除以10后的余数,所以这里填 `10`。
2. 第二处空格:我们需要判断取出的个位数是否为奇数,可以通过 `t%2` 是否等于 `0` 来判断,因此填 `0`。
3. 第三处空格:在循环结束后,形参n应该指向新组成的数,即变量x,所以填 `x`。
修正后的代码如下:
```c
#include<stdio.h>
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; // 形参n指向新数x
}
main() {
unsigned long n = -1;
while (n > 99999999 || n < 0) {
printf("Please input (0 < n < 100000000):");
scanf("%ld", &n);
}
fun(&n);
printf("\nThe result is: %ld\n", n);
}
```
接下来是第二个题目,给定的程序MODI1.C中有一个计算阶乘的函数fun,其目的是计算n!。题目指出在现有代码中存在错误,需要修正。问题在于:
1. 第一处空格:条件语句if后面缺少了`=`, 应该是 `if (n == 0)`。
2. 第二处空格:while循环条件错误,应该确保n在1到170之间,因为阶乘可能会导致溢出,所以使用 `while (n > 1)` 而不是 `while (n > 1 && n < 170)`。
修正后的代码:
```c
#include<stdio.h>
double fun(int n) {
double result = 1.0;
if (n == 0) // 修正if语句
return 1.0;
while (n > 1) { // 修正while循环条件
result *= n;
n--;
}
return result;
}
// main函数保持不变...
```
这两个题目都展示了C语言的基础知识,包括变量、运算符、控制流以及函数的使用。在准备计算机二级考试时,熟悉并能够熟练运用这些基础知识是非常关键的。通过练习类似的题目,考生可以提高自己的编程能力和对C语言的理解,从而提高考试的通过率。
2024-02-05 上传
2019-03-20 上传
2023-09-24 上传
2024-07-04 上传
2024-11-22 上传
ziqiongfengyu
- 粉丝: 0
- 资源: 1
最新资源
- MATLAB实现小波阈值去噪:Visushrink硬软算法对比
- 易语言实现画板图像缩放功能教程
- 大模型推荐系统: 优化算法与模型压缩技术
- Stancy: 静态文件驱动的简单RESTful API与前端框架集成
- 掌握Java全文搜索:深入Apache Lucene开源系统
- 19计应19田超的Python7-1试题整理
- 易语言实现多线程网络时间同步源码解析
- 人工智能大模型学习与实践指南
- 掌握Markdown:从基础到高级技巧解析
- JS-PizzaStore: JS应用程序模拟披萨递送服务
- CAMV开源XML编辑器:编辑、验证、设计及架构工具集
- 医学免疫学情景化自动生成考题系统
- 易语言实现多语言界面编程教程
- MATLAB实现16种回归算法在数据挖掘中的应用
- ***内容构建指南:深入HTML与LaTeX
- Python实现维基百科“历史上的今天”数据抓取教程