计算机二级考试题库:C语言与阶乘问题解析
需积分: 10 153 浏览量
更新于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-12-25 上传
2024-12-25 上传