2013年3月计算机二级考试C语言上机题库解析
下载需积分: 14 | DOC格式 | 1.06MB |
更新于2024-07-26
| 110 浏览量 | 举报
"这是两道关于计算机二级考试,特别是C语言编程的题目。第一题要求编写一个函数,该函数接收一个无符号长整型变量的指针,移除其中所有偶数位上的数字,只保留奇数位上的数字,并保持原有顺序。第二题要求实现一个计算阶乘的函数,即计算n的阶乘,但原代码存在错误,需要修正。"
在第一题中,我们需要理解函数fun的工作原理。函数的目标是接收一个无符号长整型数值的指针,然后遍历这个数值的每一位,检查每位是否为奇数。如果是奇数,就将其添加到新数x中,新数x按照从高位到低位的顺序构建。首先,我们需要在*t%__1__处填入10,因为我们要获取*n的个位数。然后,判断条件*t%2!=__2__是为了确认当前位是否为奇数,因此填入0。最后,在*n=__3__处,我们需要将新构建的数x赋值回*n,因此填入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; // 保留奇数位并累加到新数x
i = i * 10; // 更新权重,准备处理下一位
}
*n = *n / 10; // 移除已处理的位
}
*n = x; // 将新数x赋值回*n
}
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);
}
```
第二题中,我们看到函数fun的目的是计算阶乘。原代码中的错误包括条件语句的格式错误和缺少分号。正确的代码应该是:
```c
#include<stdio.h>
double fun(int n) {
double result = 1.0;
if (n == 0) // 修正条件语句格式
return 1.0;
while (n > 1 && n < 170) { // 计算阶乘
result *= n--;
} // 添加丢失的分号
return result;
}
main() {
int n;
printf("Input N: ");
scanf("%d", &n);
printf("\n\n%d! = %lf\n\n", n, fun(n));
}
```
修正后的fun函数会正确地计算n的阶乘,而不会超出double类型的最大值(由于限制n<170),并在main函数中显示结果。
这两题涉及的知识点包括C语言的基本语法,如条件语句、循环、取模运算以及指针的使用。同时,也涉及到算法设计,如数字处理和阶乘计算。对于参加计算机二级考试的考生来说,理解和掌握这些知识点至关重要。
相关推荐
![filetype](https://img-home.csdnimg.cn/images/20210720083327.png)
![filetype](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
u010139158
- 粉丝: 1
最新资源
- 使用Struts+Hibernate构建Web工程从零开始教程
- SQL基础操作与数据定义详解
- Win32 NetBIOS编程接口详解
- 数据库系统基础:习题解析与重点概念
- GNU Make中文手册:详解与指南
- Boost Graph Library用户指南与参考手册
- MAX471/MAX472高侧电流感知放大器在便携式PC和电话中的应用
- 51单片机AT89C51:入门与功能详解
- XML实用大全:探索XML在信息技术领域的应用
- 操作系统实验:处理机调度模拟
- B/S模式下的生产信息管理系统设计与实现
- TWIKI安装与配置指南
- OpenSceneGraph基础教程:3D场景图形解析
- 机器学习驱动的自动文本分类技术
- 数理逻辑入门:命题逻辑详解
- 理解OWL:构建语义网格的关键语言