对于一个数字n,我们必须采取一次操作: 交换其相邻的两位。
经过交换后得到的最大的数为zzj数。
聪明的你看到这里一定知道你要做什么了:,
输入
给定一个数字n。
数据范围: 10 <= n <= 1e8
输出
输出其zzj数。
样例输入 Copy
19260817
样例输出 Copy
91260817
我有两个问题
1.怎么获取一个字符串中字符的个数
2.交换并判断后没有输出值
求帮忙解答一下可以提供一下思路和代码吗
一个取巧的方法是直接以字符串方式读取输入的数字,从字符串开头两两字符比较。
找到前面字符小于后面字符就将两个字符交换位置,并结束循环,输出字符串。
由于题目要求必须采取一次交换操作,到最后两个字符时必须交换
你题目的解答代码如下:
#include<stdio.h>
#include<string.h>
int main()
{
int n,i;
char s[100],t;
scanf("%s", s);
int len = strlen(s);
for (i = 0; i < len-1; i++)
{
if(s[i] < s[i+1] || i == len-2)//到最后两个字符时必须交换
{
t = s[i];
s[i] = s[i+1];
s[i+1] = t;
break;
}
}
printf("%s",s);
return 0;
}
如有帮助,望采纳!谢谢!
就是从整数的最高位向后两两比较,找到第一对递减的两个数字,交换这两个数字后就是结果值
整数位数可以通过循环除以10,判断余数为0则结束,循环多少次就是多少位。可以将每一位数字转换存储到整型数组,然后比较数组值进行交换后,按顺序输出整数就行了