C语言初学者救助:重排一个整数各位,然后组成一个最小数和一个最大数 如 输入45091 输出 95410 1459
发布网友
发布时间:2022-08-19 09:41
我来回答
共4个回答
热心网友
时间:2023-10-23 15:55
char a[100],t;
int ln,i,j;
gets(a);
ln=strlen(a);
for(i=0;i<ln;i++) //排序
for(j=i+1;j<ln;j++)
if(a[i]<a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
puts(a); //大数
for(i=0;i<ln;i++) //排序
for(j=i+1;j<ln;j++)
if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
for(i=0;i<ln;i++) //去掉前面的零
if(a[i]!='0')
break;
for(;i<ln;i++)
printf("%c",a[i]); //小数
热心网友
时间:2023-10-23 15:56
#include "stdio.h"
#include <math.h>
#define N 5 //定义是几位数
int max(int a[]) //求最大数
{
int i,j,temp;
int x=0;
for(i=0;i<N;i++)
{
for(j=0;j<N-i-1;j++)
{
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=0;i<N;i++)
x+=a[i]*pow(10,N-1-i);
return x;
}
int min(int a[]) //求最小数
{
int i,j,temp;
int y=0;
for(i=0;i<N;i++)
{
for(j=0;j<N-i-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=0;i<N;i++)
y+=a[i]*pow(10,N-1-i);
return y;
}
void main()
{
int a[N+1],x,y;
int i=0;
printf("请输入%d位的整数: ",N);
scanf("%d",&x);
while(x>0)//将各个位的数字分解
{
a[i++]=x%10;
x=x/10;
}
x=max(a);
y=min(a);
printf("最大数:%d\n",x);
printf("最小数:%d\n",y);
}
热心网友
时间:2023-10-23 15:56
其实就是冒泡算法~
热心网友
时间:2023-10-23 15:57
放在数组里面,排序即可