C语言程序:去除偶数位数字,保留奇数位
5星 · 超过95%的资源 需积分: 3 40 浏览量
更新于2024-08-02
收藏 10.13MB PDF 举报
"这是一个关于2008年南开大学二级C语言上机考试题库的PDF文件,包含了100套题目。其中展示了一道具体的编程题,要求编写一个函数fun,该函数的功能是从一个无符号长整型数值中移除所有偶数位上的数字,仅保留奇数位数字,并保持原有的高位到低位的顺序。提供的源代码中有三处需要填写的内容,解题思路已经给出。"
在C语言中,处理这种问题通常涉及到数字的位操作和条件判断。这道题目中,函数`fun`接受一个无符号长整型指针作为参数,该指针指向要处理的数字。程序的核心部分是一个循环,它遍历数字的每一位,判断每位是否为奇数,并根据判断结果决定是否保留该位。
第一处填空:`t=*n%__1__;` 这里`t`用于存储当前数字的个位,因此需要取模10,因为10是十进制的一位数的基数,所以应填入10。
第二处填空:`if(t%2!=__2__)` 这个条件用于检查`t`(即当前位)是否为奇数。如果`t`除以2的余数不等于0,则`t`是奇数,应填入0,使得条件为`t%2!=0`。
第三处填空:`*n=__3__;` 在循环结束后,需要将处理后的新数赋值回原数的指针位置,即`*n`应为变量`x`,`x`存储了处理后的结果,所以此处填入`x`。
完整的代码应该是这样的:
```c
#include<stdio.h>
void fun(unsigned long *n)
{
unsigned long x = 0, i; int t;
i = 1;
while (*n)
{
t = *n % 10; // 第一处填空:取个位
if (t % 2 != 0) // 第二处填空:判断奇偶
{
x = x + t * i; i = i * 10;
}
*n = *n / 10; // 无论奇偶,都移除当前位
}
*n = x; // 第三处填空:返回新数
}
main()
{
unsigned long n = -1;
while (n > 99999999 || n < 0)
{
printf("Please input (0<n<100000000):");
scanf("%ld", &n);
}
fun(&n);
printf("\nThe result is: %ld\n", n);
}
```
这个程序对于输入的数字,会打印出经过处理后的新数,只包含原始数字的奇数位。例如,输入27638496,输出将是739。
2021-10-10 上传
2021-10-04 上传
2017-09-08 上传
2021-10-01 上传
106 浏览量
xbs72
- 粉丝: 3
- 资源: 18
最新资源
- 开源通讯录备份系统项目,易于复刻与扩展
- 探索NX二次开发:UF_DRF_ask_id_symbol_geometry函数详解
- Vuex使用教程:详细资料包解析与实践
- 汉印A300蓝牙打印机安卓App开发教程与资源
- kkFileView 4.4.0-beta版:Windows下的解压缩文件预览器
- ChatGPT对战Bard:一场AI的深度测评与比较
- 稳定版MySQL连接Java的驱动包MySQL Connector/J 5.1.38发布
- Zabbix监控系统离线安装包下载指南
- JavaScript Promise代码解析与应用
- 基于JAVA和SQL的离散数学题库管理系统开发与应用
- 竞赛项目申报系统:SpringBoot与Vue.js结合毕业设计
- JAVA+SQL打造离散数学题库管理系统:源代码与文档全览
- C#代码实现装箱与转换的详细解析
- 利用ChatGPT深入了解行业的快速方法论
- C语言链表操作实战解析与代码示例
- 大学生选修选课系统设计与实现:源码及数据库架构