數之重排列

afanofDoinb發表於2020-11-28

數之重排列

從鍵盤輸入一個不超過9位的正整數(無符號長整型,輸入範圍為1~999999999),將該正整數中的每位數字重新排列可以得到新的數字,程式設計輸出其中的最大數和最小數,每個數使用 %10ld 的形式輸出。

例如輸入:47091

則由4、7、0、9、1這5個數字組成的最大數為97410,最小數位1479,則輸出為:

 97410      1479

由於使用%10ld形式輸出,其中97410前有5個空格,1479前有6個空格

#include<stdio.h>
#include<string.h>
int main()
{
	int t,k,i,y;
	long int n;
	char str[10],m[10];
	while(scanf("%s",str) != EOF)
	{
	k=strlen(str);
	y=str[0];
	for (i=0;i<k-1;i++)
	{
		for(t=i+1;t<k;t++)
		{
			if(str[i]<str[t])
			{
				y=str[i];
				str[i]=str[t];
				str[t]=y; 
			}
		}
	}
	sscanf(str,"%10ld",&n);
	printf("%10ld",n);
	for (i=0;i<k-1;i++)
	{
		for(t=i+1;t<k;t++)
		{
			if(str[i]>str[t])
			{
				y=str[i];
				str[i]=str[t];
				str[t]=y; 
			}
		}
	}
		for(i=0;i<k;i++)
		{
			m[i]=str[i];	
		}
	sscanf(m,"%10ld",&n);
	printf("%10ld",n);
	return 0;
	}
}

相關文章