c语言用循环数组输入两个整数x、y,输出x、y中各位数重新组合可能形成的最大的数 输入:只有一组,每组两个长度不超过12位的正整数 输出:用x、y中的所有数字位重新组合能形成的最大的数 样例输入:100 423 0 样例输出:432100
时间: 2024-11-10 18:14:34 浏览: 20
C语言中两个常见问题的通用算法.pdf
在C语言中,你可以使用嵌套循环和字符串处理来完成这个任务。首先,我们需要将输入的整数转换成字符数组(ASCII码),然后对这两个字符数组进行重组,并将其转换回整数形式。下面是一个示例程序来实现这个功能:
```c
#include <stdio.h>
#include <string.h>
int main() {
char x[13], y[13];
int i, j, temp, max_num = 0;
// 输入两个整数
printf("请输入两个长度不超过12位的正整数(以空格分隔): ");
scanf("%s %s", x, y);
// 将字符串转为整数数组
for (i = 0; x[i] != '\0'; i++) {
x[i] -= '0';
}
for (j = 0; y[j] != '\0'; j++) {
y[j] -= '0';
}
// 找出最大数
for (i = 0; i <= strlen(x); i++) { // 遍历x的所有位
for (j = 0; j <= strlen(y); j++) { // 遍历y的所有位
temp = 0;
// 将x的前i位和y的前j位连接起来
for (k = 0; k < i && k < j; k++) {
temp = temp * 10 + x[k] + y[k]; // 相加
}
if (i < strlen(x)) { // 如果还有x剩余位,添加
temp = temp * 10 + x[i];
}
if (j < strlen(y)) { // 同理,如果还有y剩余位
temp = temp * 10 + y[j];
}
// 检查是否比当前最大值大
if (temp > max_num) {
max_num = temp;
}
}
}
// 输出结果
printf("通过重新组合得到的最大数是: %d\n", max_num);
return 0;
}
```
阅读全文