数字游戏
给一个N位的正整数,该数不包含前导0,先让你调整其中每个数字的位置,得到另一个n位的数,并且使得这个数越小越好,而且这个数不能包含前导0。比如543210可以变成102345,而12345保持不变才是最优结果。
Input
第一行一个整数T(T<=100),表示有T组数据。每组数据先输入一行一个整数N(1<=N<=100),表示位数,接下来一行输入一个N位的不包含前导0的正整数。
Output
每组数据对应一行输出,即调整数字位置后能得到的最小的不包含前导0的数。
Sample Input
3
6
543210
3
123
3
231
Sample output
102345
123
123
# include <stdio.h>
int main()
{
int T,N,i,j,k,m,n,x;
char c,a[100],t;
scanf("%d",&T);
for(i = 1;i <= T;i++)
{
scanf("%d",&N);
scanf("%c",&c);
for(x = 0;x <= N-1;x++)
{
scanf("%c",&a[x]);
}
for(j = 1;j <= N-1;j++)
{
for(k = 0;k <= N-2;k++)
{
if(a[k] > a[k+1])
{
t = a[k];
a[k] = a[k+1];
a[k+1] = t;
}
}
}
if(a[0] == '0')
{
for(m = 1;m <= N-1;m++)
{
if(a[m] > 0)
{
t = a[m];
a[m] = a[0];
a[0] = t;
break;
}
}
for(n = 0;n <= N-1;n++)
{
printf("%c",a[n]);
}
printf("\n");
}
else
{
for(n = 0;n <= N-1;n++)
{
printf("%c",a[n]);
}
printf("\n");
}
}
return 0;
}
我的易错点:
- if(a[0] == ‘0’) 由于a[100]是字符数组,所以0应该加单引号。
- 第三者t应定义成char类型