输入一个正整数N(long long型范围内),输出N的奇半数和偶半数。N的奇半数就是N的奇数位组成的数,N的偶半数就是N的偶数位组成的数(从右侧开始数),例如:1234567的奇半数是1357,偶半数是246 c语言
时间: 2024-12-13 14:26:53 浏览: 41
在C语言中,你可以通过以下步骤计算一个正整数N的奇半数和偶半数:
```c
#include <stdio.h>
#include <string.h>
void split_number(long long num, char *odd, char *even) {
int len = snprintf(NULL, 0, "%lld", num);
odd[len] = '\0'; even[len] = '\0';
char *p = strtok(odd, "0");
while (p != NULL) {
strcat(even, p++);
if (strchr(p, '0')) {
strcat(even, ",");
}
}
}
int main() {
long long N;
printf("请输入一个正整数:");
scanf("%lld", &N);
char odd[100], even[100];
split_number(N, odd, even);
// 移除逗号并打印结果
for (size_t i = 0; i < strlen(odd); ++i) {
if (odd[i] == ',') {
odd[i] = '\0';
break;
}
}
printf("奇半数:%s\n", odd);
printf("偶半数:%s\n", even);
return 0;
}
```
这个程序首先获取用户输入的长整数N,然后将其拆分为奇数部分和偶数部分。`split_number`函数通过`strtok`遍历数字字符串,并将奇数添加到`odd`数组,偶数添加到`even`数组。最后删除`odd`数组中的逗号,分别打印出奇半数和偶半数。
阅读全文