C语言 编写函数long fun(longx),将长整型参数x中每一位上为偶数的数依次取出,构成一个新数返回,例如:下面程序运行时输入:124578902,程序输出:24802.
时间: 2024-12-23 14:18:24 浏览: 17
在C语言中,你可以通过位运算来编写一个这样的函数。这里我们假设`fun`函数会按从右到左的顺序检查每一位,并将遇到的偶数值添加进结果。下面是一个简单的示例:
```c
#include <stdio.h>
// 函数声明
long long fun(long long x);
int main() {
long long input = 124578902;
long long result = fun(input);
printf("Output: %lld\n", result); // 输出:24802
return 0;
}
// 实现函数fun
long long fun(long long x) {
long long mask = 1; // 初始化掩码,用于逐位检查
long long result = 0; // 结果存储器
while (x != 0) {
if ((x & mask) == 0) { // 检查当前位是否为偶数
result <<= 1; // 如果是偶数,左移一位并置1
} else {
result++; // 否则是奇数,直接加1
}
mask <<= 1; // 更新掩码,继续检查下一位
}
return result;
}
```
这个函数`fun`通过位与运算符`&`检查每一位,如果与1相与的结果为0,则表示该位是偶数,将其对应的二进制值(1)左移一位存入结果;如果结果不是0,则说明该位是奇数,简单地增加结果。当所有位都处理完之后,就得到了所需的偶数组成的数字。
阅读全文