C语言编写程序,取出一个十进制正整数中所有奇数数字,用这些数字组成一个最小数
时间: 2024-11-03 11:19:02 浏览: 7
在C语言中,你可以通过遍历输入的十进制正整数,并检查每一位是否为奇数,然后将这些奇数组成一个新的字符串。最后,利用`atoi`函数将其转换回整数并找出其中最小的一个。这里是一个简单的示例:
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
// 函数用于从给定的字符串中生成最小的奇数组合
int generate_min_odd(int num_str[], int len) {
int i, j;
for (i = 0; i < len; i++) {
if (isdigit(num_str[i]) && num_str[i] % 2 != 0) {
break;
}
}
// 如果没有找到奇数,返回0
if (i == len) {
return 0;
}
char min_num[len];
for (j = i; j < len; j++) {
min_num[j - i] = num_str[j]; // 移位以便在新数组中从左到右排列
}
min_num[j - i] = '\0'; // 添加终止符
// 将字符数组转换为整数
int min_value = atoi(min_num);
return min_value;
}
int main() {
int num;
printf("请输入一个十进制正整数:");
scanf("%d", &num);
// 取出所有奇数并保存为字符数组
char num_str[100];
sprintf(num_str, "%d", num);
int len = strlen(num_str);
int odd_digits[] = {0};
for (int i = 0; i < len; i++) {
if (isdigit(num_str[i]) && num_str[i] % 2 != 0) {
odd_digits[0]++;
odd_digits[odd_digits[0]] = num_str[i] - '0';
}
}
// 使用找到的奇数组成最小数
int min_odd = generate_min_odd(odd_digits, odd_digits[0]);
printf("由奇数组成的最小数为:%d\n", min_odd);
return 0;
}
```
阅读全文