题目描述:输入两个字符串a和b,将b串中的最大字符插入到a串中最小字符后面。
样例输入:
MynameisAmy
MynameisJane
样例输出:
MynameisAymy
执果索因,我们的思路如下:输出的时候,把a这个数组共分为两部分,分界点是他的最小值这个点,先输出最小值之前的部分,然后紧接着输出在b字符串中找到的最大字符,紧接着输出a字符串后面的部分
因此我们需要分别找到两个字符串中分别对应的最大字符和最小字符,我们可以直接用循环遍历的方法。我们应该注意的是,我们不仅要找到这两个字符本身,更重要的是找到这两个字符在各自的字符数组中对应第i个元素的这个i,并分别用别的变量max和min记住这两个位置,因为这是我们用for循环输出的分界点。
代码实现如下
#include <stdio.h>
#include <string.h>
int main(void)
{
char a[100],b[100];
scanf("%s",a);
scanf("%s",b);//输入两个字符串
int m,n,max,min=0;
//注意要先输入字符串再用strlen去计算他的大小
m=strlen(a);
n=strlen(b);//用strlen找到两个循环遍历的终点
for(int i=0;i<m;i++)
{
if(a[i]<a[min])
{
min=i;//记录a中最小字符的位置,作为最终输出的分界点
}
}
for(int i=0;i<n;i++)
{
if(b[i]>b[max])
{
max=i;//记录b中最大字符的位置,最终把b[amx]紧跟着a的最小字符输出
}
}
for(int i=0;i<=min;i++)//最终的输出
printf("%c",a[i]);
printf("%c",b[max]);
for(int i=min+1;i<m;i++)
printf("%c",a[i]);
return 0;
}