C语言:输入一个数,如果它不是偶数,交换它的位数上的数字使它变成偶数,否则就输出-1
时间: 2024-12-28 16:38:07 浏览: 6
在C语言中,你可以通过遍历每一位数字并检查是否能组成一个偶数来实现这个功能。这里是一个简单的步骤描述:
1. 首先,接收用户输入的一个整数。
2. 使用循环(如`for`或`while`),从右向左(低位到高位)逐位检查每个数字。
3. 如果当前位是个奇数,需要找到一个非零的偶数(比如可以将最低位的1替换为0,或者寻找其他未使用的位),通过异或操作(`^`)来改变这一位。
4. 当所有位都检查完毕后,将结果再次转换回十进制形式,看看它现在是不是偶数。
5. 如果它是偶数,直接返回原值;如果是奇数,并完成了位交换,那么返回-1表示无法通过位交换得到偶数。
下面是一个简化的示例代码片段(仅适用于正整数):
```c
#include <stdio.h>
int swap_odd_digits(int num) {
int reversed = 0; // 存储反转后的数字
while (num > 0) {
int last_digit = num % 10;
if (last_digit % 2 != 0) { // 判断是否为奇数
for (int i = 0; i <= reversed; ++i) {
// 尝试用当前位覆盖前一位,异或操作
num ^= (1 << i);
}
}
reversed = num % 10; // 更新reversed
num /= 10; // 移除最低位
}
if (num % 2 == 0) {
return num;
} else {
return -1; // 表示无法变为偶数
}
}
int main() {
int input;
printf("请输入一个数: ");
scanf("%d", &input);
int result = swap_odd_digits(input);
printf("处理后的数: %d\n", result);
return 0;
}
```
阅读全文