字母自动排序插入到应该在的位置

【问题描述】 小明一向是一个倒霉又聪明的学生,今天她坐在一颗苹果树下读书,由于她很倒霉所以不断有 很多苹果从树上掉到她的头上,同时又有损友向她扔苹果。现在她数出了一共有 n 个苹果掉 到了地上,并且为每个苹果编上了一个字母,并对它们按字典序排序,但是她不知道损友扔给她的苹果应该插入在哪里。

输入:
第一行有一个 n,代表树上掉下来了 n 个苹果。
第二行有 n 个小写字母,代表从树上掉下来苹果的编号。
第三行只有一个小写字母,代表朋友扔给她的那一个。

【样例输入】
9
bcehijrzz
f
【样例输出】
bcefhijrzz

(把f插入到了按字母顺序应该在的位置)

如下:

#include <iostream>
using namespace std;

int main()
{
    char buf[100];
    int n, i,flag=0;
    char ch;
    cin >> n;
    cin >> buf;
    cin.get(ch); //接收回车符
    cin.get(ch); //接收损友仍的苹果

    if (ch <= buf[0])
        cout << ch << buf << endl;
    else if (ch >= buf[n - 1])
        cout << buf << ch << endl;
    else
    {
        for (i = 0; i < n; i++)
        {
            if (buf[i] < ch)
                cout << buf[i];
            else
            {
                if (flag == 0)
                {
                    flag = 1;
                    cout << ch << buf[i];
                }
                else
                    cout << buf[i];
                    
            }
        }
    }

    return 0;
}

img

#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;

int main()
{
    int n;
    char t,str[250];
    cin >> n;
    cin >> str;
    cin >> t;
    int len=strlen(str);
    str[len]=t;
    str[len+1]='\0';
    sort(str,str+(len+1));
    cout << str << endl;
    return 0;
}
void inword(char a[],int n, char d){
    for(int i = 0; i < n; i++)
    {
        if((a[i]<=d && i < n-1 && a[i+1] > d) || (a[i]<=d && i == n-1)){
            cout<<a[i]<<d;
        }else{
            cout<<a[i];
        }
    }
}