C语言代码 分离整数的奇数位和偶数位
时间: 2024-09-26 12:06:08 浏览: 34
在C语言中,分离一个整数的奇数位和偶数位可以使用位操作技巧。通常的做法是将数字左移一位(相当于乘以2),然后与当前数值做按位与操作(&),这样最低位会被新的最低位替换,并且其他所有位变为0。对于偶数位,我们可以忽略这一过程;对于奇数位,则可以对结果取按位异或操作(^)与原始数值,因为奇数位会保留下来,而偶数位会消失。
下面是一个简单的函数示例:
```c
#include <stdio.h>
void separate_odd_even(int num) {
int odd = num;
int even;
// 奇数位
while (odd != 0) {
even = even << 1; // 左移一位
odd = odd & even; // 取奇数位
odd = odd ^ num; // 原始值与奇数位异或,保留奇数位
}
// 偶数位
printf("偶数位: %d\n", num & ~even); // ~even 表示除偶数位外的所有位
}
int main() {
int input_num;
printf("请输入一个整数: ");
scanf("%d", &input_num);
separate_odd_even(input_num);
return 0;
}
```
当你运行这个程序并输入一个整数时,它会分别打印出该数的奇数位和偶数位。
相关问题
C语言代码 分离整数的奇数位数字和和偶数位数字和
在C语言中,分离整数的奇数位数字和和偶数位数字和通常需要对每一位进行判断并累加。这可以通过循环遍历每一位数字,并根据位数是否为奇数来决定将该位数字加入奇数和还是偶数和。这里是一个简单的示例代码:
```c
#include <stdio.h>
int separate_odd_even(int num) {
int odd_sum = 0;
int even_sum = 0;
while (num != 0) {
// 取出最后一位数字
int last_digit = num % 10;
// 判断奇偶性
if (last_digit % 2 == 0) {
even_sum += last_digit;
} else {
odd_sum += last_digit;
}
// 移除最低位
num /= 10;
}
return odd_sum, even_sum;
}
int main() {
int number = 123456789;
int odd, even;
odd, even = separate_odd_even(number);
printf("奇数位数字之和: %d\n", odd);
printf("偶数位数字之和: %d\n", even);
return 0;
}
```
在这个例子中,`separate_odd_even()` 函数接收一个整数 `num`,然后通过 `while` 循环和取模运算 `%` 来分离奇数和偶数位。每轮循环都会检查当前位是否为偶数,如果是,则加到 `even_sum`,反之加到 `odd_sum`。最后返回这两个和。
c语言一个整数奇数位上是奇数,偶数位上是偶数的数成为好数,求好数代码
在C语言中,我们可以定义一个名为`goodNumber`的函数,来判断给定的整数是否符合条件。首先,我们需要将输入的数字转换为字符串,然后逐位检查每个字符(在ASCII码表中,字符0对应数字0,'1'对应1,以此类推)。以下是简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
// 判断字符是否为数字
bool isDigit(char c) {
return ('0' <= c && c <= '9');
}
// 检查整数的好数性质
bool isGoodNumber(int num) {
char strNum[100]; // 存储数字字符串
sprintf(strNum, "%d", num);
int oddPositionEven = 1, evenPositionOdd = 0;
int position = 0;
for (char c : strNum) {
if (isDigit(c)) {
if (position % 2 == 0) { // 偶数位置
if ((c - '0') % 2 != 0) { // 如果该位置数字是奇数
oddPositionEven = 0; // 现在不是好数了
break;
} else {
oddPositionEven = 1; // 仍是好数,偶数位置偶数
}
} else { // 奇数位置
if ((c - '0') % 2 == 0) { // 如果该位置数字是偶数
evenPositionOdd = 0; // 现在不是好数了
break;
} else {
evenPositionOdd = 1; // 仍是好数,奇数位置奇数
}
}
position++;
}
}
return oddPositionEven && evenPositionOdd;
}
int main() {
int number;
printf("请输入一个整数:");
scanf("%d", &number);
if (isGoodNumber(number)) {
printf("%d 是一个好数。\n", number);
} else {
printf("%d 不是一个好数。\n", number);
}
return 0;
}
```
阅读全文