C语言编程:去除偶数位数字的函数解析与实现
5星 · 超过95%的资源 需积分: 10 173 浏览量
更新于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`函数首先检查字符串的开头是否有符号,然后逐位处理字符串,直到遇到字符串结束符。注意,这里假设输入的字符串只包含数字和可选的符号。实际应用中,还需要处理非法输入的错误情况。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2009-03-29 上传
2011-05-02 上传
点击了解资源详情
2013-04-06 上传
2012-05-09 上传
2017-10-26 上传
jhd520123
- 粉丝: 0
- 资源: 1
最新资源
- 软件设计师历年试题详解
- 2010软件设计师考试大纲
- QT+4 简单 例子 pdf
- GSM网络优化操作指导书(部分).doc
- 2008微思网络CCNP(BSCI)实验手册
- 网优考核试题(含部分答案解释).doc
- 中低端路由器典型配置实例
- 手把手教你写批处理-批处理的介绍.pdf
- petshop4.0详解
- 模具设计与制造基本知识
- Facebook详细介绍
- flex中文文档--本文所有资料均来自Flex官方文档,其英文版权归 Adobe公司所有
- 电子商务管理复习资料
- .NET Test Automation Recipes A Problem-Solution Approach
- VC下实现循环播放MP3,wma等音乐
- 烟草局短信息管理系统