C语言函数实现偶数位保留并返回新数

需积分: 9 0 下载量 173 浏览量 更新于2024-09-18 收藏 348KB TXT 举报
"C语言二级题库" 本题库提供了一个C语言编程题目,主要考察函数fun的功能实现。该函数接受一个无符号长整型指针n,其目的是将输入数值n中各位上为偶数的数字取出,其余数字按照原顺序重新组成一个新的数。例如,输入27638496,输出应为739。函数要求在保留原始逻辑的同时,对代码进行修改以达到预期效果。 程序的核心部分如下: ```c void fun(unsigned long *n) { unsigned long x = 0, i = 1; int t; // 循环处理每一位数字 while (*n) { t = *n % 10; // 获取当前位的值(%10用于取个位) if (t % 2 != 0) { // 检查是否为偶数 x = x + t * i; // 如果是奇数,将其加入结果 i *= 10; // 移位,准备处理下一位 } *n = *n / 10; // 去掉处理过的个位 } // 将剩余的奇数部分赋值给原指针n *n = x; } ``` 在`main`函数中,用户被提示输入一个0到100000000之间的数,并通过`fun`函数处理后输出结果。需要注意的是,题目的要求是在`fun`函数中添加必要的代码来完成任务,而不仅仅是调用它。 另外,还提到了一个名为`MODI1.C`的文件,似乎在其中对`fun`函数进行了修改,但具体改动没有给出。题目的最后部分提到,如果直接运行`main`函数会存在问题,可能需要先调用`fun`函数,然后在`main`中处理输出。 这部分代码的难点在于理解如何仅提取偶数位并重新组合,同时处理边界条件。测试部分则涉及输入验证和结果输出的正确性。学习者可以通过这个题目练习C语言的位操作、条件判断以及函数调用等基本技巧。