计算机二级考试题库:C语言与阶乘问题解析
需积分: 10 156 浏览量
更新于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-10-16 上传
ziqiongfengyu
- 粉丝: 0
- 资源: 1
最新资源
- WPF渲染层字符绘制原理探究及源代码解析
- 海康精简版监控软件:iVMS4200Lite版发布
- 自动化脚本在lspci-TV的应用介绍
- Chrome 81版本稳定版及匹配的chromedriver下载
- 深入解析Python推荐引擎与自然语言处理
- MATLAB数学建模算法程序包及案例数据
- Springboot人力资源管理系统:设计与功能
- STM32F4系列微控制器开发全面参考指南
- Python实现人脸识别的机器学习流程
- 基于STM32F103C8T6的HLW8032电量采集与解析方案
- Node.js高效MySQL驱动程序:mysqljs/mysql特性和配置
- 基于Python和大数据技术的电影推荐系统设计与实现
- 为ripro主题添加Live2D看板娘的后端资源教程
- 2022版PowerToys Everything插件升级,稳定运行无报错
- Map简易斗地主游戏实现方法介绍
- SJTU ICS Lab6 实验报告解析