c语言编写输入一个三位正整数,将数字位置重新排列,组成一个尽可能大的三位数。例如:输入213,重新排列得到尽可能大的三位数321。
时间: 2024-05-12 12:17:00 浏览: 149
好的,让我来回答你的问题。对于这个问题,我可以给你一个简单的解决方案。你可以将输入的三位正整数转换为一个字符串,然后按照从大到小的顺序对这个字符串进行排序,最后将排序后的字符串转换为整数即可。以下是对应的代码实现(假设输入的三位正整数存储在变量num中):
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmp(const void *a, const void *b) {
return (*(char *)b - *(char *)a);
}
int main() {
int num;
char str[4];
// 获取用户输入
printf("请输入一个三位正整数:");
scanf("%d", &num);
// 将数字转换为字符串
sprintf(str, "%d", num);
// 对字符串进行排序
qsort(str, strlen(str), sizeof(char), cmp);
// 将排序后的字符串转换为整数
int result = atoi(str);
// 输出结果
printf("重新排列后的数字为:%d\n", result);
return 0;
}
```
在代码中,我们使用sprintf函数将输入的数字转换为字符串,然后调用qsort函数按照从大到小的顺序对字符串进行排序,最后使用atoi函数将排序后的字符串转换为整数。注意,在定义str数组时,我们需要将其长度设置为4,而不是3,这是因为字符串的末尾需要一个空字符('\0')来表示字符串的结束。
阅读全文