C语言编程:去除偶数位数字的函数解析与实现
5星 · 超过95%的资源 需积分: 10 78 浏览量
更新于2024-07-26
3
收藏 995KB DOC 举报
"2013全国计算机二级考试机试试题完整版"
这篇资源包含了两道计算机编程题目,分别涉及C语言的数值处理和字符串转换。第一个题目是关于处理整数的,函数`fun`需要去除输入数值中各位为偶数的数字,保留奇数位,然后返回新的数。在提供的代码中,`fun`函数通过取模运算 `%` 来获取数值的个位,检查是否为奇数,并根据条件更新新数`x`。在`main`函数中,用户被要求输入一个在0和100000000之间的数,程序会调用`fun`函数处理这个数并打印结果。
具体修复如下:
- 第一处:填写10,因为`t=*n%10`用于获取`n`的个位数。
- 第二处:填写0,`if(t%2!=0)`用于判断该位数字是否为奇数。
- 第三处:填写`x`,因为最终的新数需要通过`n`返回,所以`*n=x`。
第二个题目要求实现一个计算阶乘的函数`fun`,输入为整数`n`,返回`n!`。初始代码存在错误,需要修复。正确的实现应如下:
- 第一处:条件语句修正为`if(n==0)`,确保当n等于0时返回1。
- 第二处:在`result*=n--`后添加分号,使其成为完整的语句。
最后,第三个题目要求编写一个函数`fun`,该函数不依赖C库函数将数字字符串转换为整数。这通常涉及到遍历字符串,逐位转换为数字并累加。由于这部分题目没有提供完整的代码,一个可能的实现是:
```c
#include<stdio.h>
#include<string.h>
long fun(const char* str) {
long result = 0;
int sign = (*str == '-') ? -1 : 1;
if (*str == '-' || *str == '+') str++; // 跳过符号
while (*str != '\0') {
result = result * 10 + (*str - '0'); // 逐位转换为数字并累加
str++;
}
return sign * result; // 应用正负号
}
int main() {
char str[100];
printf("请输入一个数字字符串:");
scanf("%s", str);
long num = fun(str);
printf("转换后的整数是:%ld\n", num);
return 0;
}
```
这个`fun`函数首先检查字符串的开头是否有符号,然后逐位处理字符串,直到遇到字符串结束符。注意,这里假设输入的字符串只包含数字和可选的符号。实际应用中,还需要处理非法输入的错误情况。
2012-05-09 上传
2011-05-02 上传
2009-03-29 上传
点击了解资源详情
2013-04-06 上传
2017-10-26 上传
2011-12-14 上传
2020-03-26 上传
点击了解资源详情
jhd520123
- 粉丝: 0
- 资源: 1
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能