C语言编程练习:去除偶数位与阶乘函数实现
需积分: 0 50 浏览量
更新于2024-07-30
收藏 1.33MB DOC 举报
C语言上机试题100道包含了两道具体的编程题目,旨在考察考生对C语言基础操作和函数理解的掌握程度。第一题要求实现一个名为`fun`的函数,该函数的主要任务是根据给定规则处理一个无符号长整型变量,保留其中偶数位并将剩余数字重新排列。函数接受一个指向无符号长整型的指针作为参数。代码中存在三个需要填充的空格,解题思路提示:
1. 第一处填写`10`,因为使用取模运算 `%` 得到的是当前数字的个位,需要与10进行比较以判断是否为偶数。
2. 第二处填写`0`,用于判断当前数字`t`是否为奇数,非零即奇数,题目要求保留偶数位。
3. 第三处填写`x`,表示将处理后的结果存储回原指针`n`所指向的变量中。
第二个题目涉及计算阶乘(`n!`),函数`fun`接收一个整数`n`作为参数。该函数需要计算并返回n的阶乘。代码中的错误在于条件判断语句和循环控制,解题时需要:
1. 第一处:由于阶乘的定义,当`n`等于0时,结果应为1,因此此处应去掉错误的判断条件,改为`if (n == 0)`。
2. 第二处:循环条件应该是`while (n > 1)`,以避免包含170在内的数值,因为题目没有提及170,可能是一个误标。
修复后的代码示例:
```c
// 第一部分:处理偶数位函数 fun.c
#include<stdio.h>
void fun(unsigned long *n)
{
unsigned long x = 0, i;
int t;
i = 1;
while (*n)
{
t = *n % 10; // 第一处:使用10获取个位
if (t % 2 != 0) // 第二处:判断是否为奇数
{ x = x + t * i; i = i * 10; }
*n = *n / 10;
}
*n = x; // 第三处:将处理后的结果赋值给原指针
}
// 第二部分:计算阶乘函数 MODI1.C
#include<stdio.h>
double fun(int n)
{
double result = 1.0;
if (n == 0) // 第一处:修复错误条件
return 1.0;
while (n > 1) // 第二处:修复循环条件
{
result *= n--;
}
return result;
}
// 主函数 main.c
int main()
{
// 主程序调用函数并输出结果
// ...
}
```
这些题目着重考察了C语言的基本数据类型、算术运算、条件控制和函数应用,是提升编程基础和逻辑思维能力的好材料。
2014-04-17 上传
2009-12-16 上传
2022-07-02 上传
2011-05-04 上传
2022-07-14 上传
2014-03-16 上传
2022-07-02 上传
kisswangjay
- 粉丝: 3
- 资源: 1
最新资源
- 掌握压缩文件管理:2工作.zip文件使用指南
- 易语言动态版置入代码技术解析
- C语言编程实现电脑系统测试工具开发
- Wireshark 64位:全面网络协议分析器,支持Unix和Windows
- QtSingleApplication: 确保单一实例运行的高效库
- 深入了解Go语言的解析器组合器PARC
- Apycula包安装与使用指南
- AkerAutoSetup安装包使用指南
- Arduino Due实现VR耳机的设计与编程
- DependencySwizzler: Xamarin iOS 库实现故事板 UIViewControllers 依赖注入
- Apycula包发布说明与下载指南
- 创建可拖动交互式图表界面的ampersand-touch-charts
- CMake项目入门:创建简单的C++项目
- AksharaJaana-*.*.*.*安装包说明与下载
- Arduino天气时钟项目:源代码及DHT22库文件解析
- MediaPlayer_server:控制媒体播放器的高级服务器