C语言编写程序取出一个十进制正整数中所有奇数数字,用这些数字构成一个最小数
时间: 2024-11-03 14:23:08 浏览: 78
在C语言中,你可以通过遍历输入的十进制正整数并检查每一位是否为奇数,然后将这些奇数字符转换成对应的数字,并组合起来形成一个新的最小数。以下是一个简单的示例程序:
```c
#include <stdio.h>
#include <ctype.h> // 包含isdigit函数
// 函数用于判断字符是否为数字字符
int is_digit(char c) {
return (c >= '0' && c <= '9');
}
// 函数用于获取字符串中的奇数字符并组成最小数
int get_min_odd_number(int num) {
char str[100]; // 存储数字字符的数组
int odd_digits = 0; // 记录奇数位数
int i;
// 将数字转换为字符串
sprintf(str, "%d", num);
for (i = 0; str[i] != '\0'; ++i) {
if (is_digit(str[i]) && str[i] % 2 == 1) { // 检查字符是否为奇数
printf("%c", str[i]); // 输出奇数字符
++odd_digits; // 奇数位数加一
}
}
// 如果没有奇数,返回0作为最小数
if (odd_digits == 0) return 0;
// 对于剩下的偶数字符,如果当前已有奇数,先减去一个较小的奇数(比如1)
// 然后再添加下一个较大的偶数,这样可以保证生成的最小数
if (odd_digits > 1) {
for (i = 0; i < odd_digits - 1; i++) {
if (str[i] == '1') {
printf("0");
} else {
printf("%c", str[i]);
}
}
printf("%c", str[odd_digits - 1]);
}
return 1; // 表明已成功生成包含奇数的最小数
}
int main() {
int num;
printf("请输入一个十进制正整数: ");
scanf("%d", &num);
if (!get_min_odd_number(num)) {
printf("该数字不含奇数,无法构建。\n");
}
return 0;
}
```
运行这个程序,它会提示用户输入一个十进制正整数,然后找出其中所有的奇数位并按照从小到大的顺序组合成一个新的最小数。
阅读全文