C语言编程:去除偶数位数字的函数解析与实现
5星 · 超过95%的资源 需积分: 10 199 浏览量
更新于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
最新资源
- StringImpl:带有C ++的字符串类impl
- apm32f407 单片机 u盘 rtthread 例程
- Project Cleaner-开源
- svn代码查看工具及团队合作
- 电工技术手册(软件版).zip
- html-css-spotifyweb
- ImageS3Android:一个Android SDK,可帮助集成ImageS3(图像调整大小并托管开源服务)
- client-treender
- PHP Newswriter 2005-开源
- treslek-vote:一个 treslek 插件,提供轮询频道的命令
- ptaska.github.io:个人网站
- windows下jak1.8安装及教程.zip
- 07.亚马逊广告整体知识整理.png.zip
- communal-property-registry
- Javadoc Taglets-开源
- SwitchButton:一个不带图片的简单开关按钮