C语言编程练习:去除偶数位与阶乘函数实现
需积分: 0 155 浏览量
更新于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 上传
2023-07-08 上传
2023-09-21 上传
2023-07-22 上传
2023-04-28 上传
2023-05-09 上传
2023-12-05 上传
kisswangjay
- 粉丝: 3
- 资源: 1
最新资源
- C/C++语言贪吃蛇小游戏
- BeInformed_Backend:与covid-19相关新闻的网站
- python实例-11 根据IP地址查对应的地理信息.zip源码python项目实例源码打包下载
- 【Java毕业设计】【厦门大学毕业设计】蚁群算法实现vrp问题java版本.zip
- shippo:ねこのしっぽ∧_∧
- Graficacion-de-vientos-usando-NCL:NCL库用于从http中提取的grib2文件中提取数据的项目
- 洞洞板简易制作电压、电容表(原理图、程序及算法讲解)-电路方案
- Rainydays
- push-bot:PubSubHubbub 到 XMPP 网关
- XPL compiler:XPL到C转换器-开源
- 【Java毕业设计】java web 毕业设计.zip
- Fruitopia
- iaagofelipe
- 毕业设计论文-源码-ASP人事处网站的完善(设计源码.zip
- TwoLevelExpandableRecyclerView:用于创建两级可扩展回收站视图的库
- 新唐M451 PWM 控制电机弦波(源码)-电路方案