c语言编写一个程序把一个正整数中每一位上为奇数的数字取出,并从高位到低位依次排列成一个新数。 【输入描述】 输入一个正整数。 【输出描述】 输出得到新数。 【输入示例】 45678 【输出示例】 57
时间: 2024-03-27 21:41:17 浏览: 37
好的,这是一个简单的 C 语言程序,可以实现你的需求:
```c
#include <stdio.h>
int main()
{
int num, digit, odd_num = 0;
scanf("%d", &num); // 输入一个正整数
while (num > 0)
{
digit = num % 10; // 取出最低位上的数字
if (digit % 2 != 0) // 判断是否为奇数
{
odd_num = odd_num * 10 + digit; // 将奇数数字加入到新数的末尾
}
num = num / 10; // 去掉最低位上的数字
}
printf("%d\n", odd_num); // 输出得到的新数
return 0;
}
```
程序的思路是先输入一个正整数,然后循环取出每一位上的数字,判断是否为奇数,如果是奇数就将其添加到新数的末尾。最后输出得到的新数。
相关问题
编写C语言程序输入一个正整数。将各位上为偶数的数取出。并按原来从高位到低位相反的顺序组成一个新的数输出。
以下是C语言程序,实现输入一个正整数,将各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数输出:
```c
#include <stdio.h>
int Fun(int n) {
int res = 0, base = 1;
while (n > 0) {
int digit = n % 10;
if (digit % 2 == 0) {
res += digit * base;
base *= 10;
}
n /= 10;
}
return res;
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
int res = Fun(n);
printf("各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成的新数为:%d\n", res);
return 0;
}
```
编写一个递归函数,将一个正整数的每一位取出来并按从高位到低位的顺序依次输出,数字之间加上短横线。c语言
以下是一个递归函数实现:
```c
#include <stdio.h>
void printDigits(int num) {
if (num < 10) { // 递归结束条件
printf("%d", num);
} else {
printDigits(num / 10); // 递归调用
printf("-%d", num % 10);
}
}
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
printf("该数的每一位按从高到低顺序依次输出为:");
printDigits(num);
printf("\n");
return 0;
}
```
函数printDigits接受一个正整数作为参数,先判断该数是否小于10,如果是,则直接输出该数;如果不是,则递归调用自身,将num除以10作为新的参数传入,直到num小于10为止。在递归回溯的过程中,每次输出num模10的结果,并在数字之间加上短横线。最后在主函数中调用该函数并输出结果。