急!!!c语言编程问题,代码有什么错,帮我改一下,谢谢!
问题:任意输入一个自然数,输出该自然数的各位数字组成的最大数。例如,输入1593,则输出为9531。输入:自然数n输出:各位数字组成的最大数#include<stdio....
问题:任意输入一个自然数,输出该自然数的各位数字组成的最大数。例如,输入 1593 ,则输出为 9531 。
输入: 自然数 n
输出: 各位数字组成的最大数
#include <stdio.h>
int main()
{int n,i,j,a=0,b=10,m=0;
scanf("%d",&n);
for(i=1;i<=n;i*=10)a=a+1;
for(i=9;i>=0;i--)
{for(j=1;j<=a;j++)
{if(n%b/(b/10)==i)m=10*m+i;
b*=10;
}}
printf("%d",m);
return 0;
}
错误:FPE: 浮点运算错误(除0) 展开
输入: 自然数 n
输出: 各位数字组成的最大数
#include <stdio.h>
int main()
{int n,i,j,a=0,b=10,m=0;
scanf("%d",&n);
for(i=1;i<=n;i*=10)a=a+1;
for(i=9;i>=0;i--)
{for(j=1;j<=a;j++)
{if(n%b/(b/10)==i)m=10*m+i;
b*=10;
}}
printf("%d",m);
return 0;
}
错误:FPE: 浮点运算错误(除0) 展开
展开全部
#include <stdio.h>
static int comp(const void *a, const void *b)
{
return *(char *)b - *(char *)a;
}
int main()
{
char str[32];
unsigned int n = 0;
scanf("%d", &n); /* 输入数字如1593 */
sprintf(str, "%u", n); /* 把数字打印到缓冲区str */
qsort(str, strlen(str), sizeof(char), comp); /* 把缓冲区字符串按降序排序,得到字符串9531 */
sscanf(str, "%u", &n); /* 从排序后的字符串输入自然数 */
printf("%d\n", n); /* 打印结果 */
return 0;
}
/* 不使用排序函数,自己编码实现的版本可以参考如下链接
http://zhidao.baidu.com/question/262772475.html
*/
static int comp(const void *a, const void *b)
{
return *(char *)b - *(char *)a;
}
int main()
{
char str[32];
unsigned int n = 0;
scanf("%d", &n); /* 输入数字如1593 */
sprintf(str, "%u", n); /* 把数字打印到缓冲区str */
qsort(str, strlen(str), sizeof(char), comp); /* 把缓冲区字符串按降序排序,得到字符串9531 */
sscanf(str, "%u", &n); /* 从排序后的字符串输入自然数 */
printf("%d\n", n); /* 打印结果 */
return 0;
}
/* 不使用排序函数,自己编码实现的版本可以参考如下链接
http://zhidao.baidu.com/question/262772475.html
*/
追问
请问可不可以简单一点?我学的是c语言基础。
追答
#include
int main()
{
int i, j, n = 0, min = 0, max = 0, len = 0;
char digits[16];
scanf("%d", &n);
for(i=1;i digits[j]) {
tmp_digit = digits[i];
digits[i] = digits[j];
digits[j] = tmp_digit;
}
}
}
max = 0;
min = 0;
for (i = len - 1; i >= 0; i--)
max = max * 10 + digits[i];
for (i = 0; i < len; i++)
min = min * 10 + digits[i];
printf("max: %d\n", max);
printf("min: %d\n", min);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询