C语言考试,谁可以回答下?

从键盘用gets函数输入从小到大有序排序列的字符串(不多于80个字符)后,再将字符‘k’插入其中,使其仍然有序。如输入:acfhhlprsyz,则输出acfhhklprsyZo 怎么作的?

供参考:

#include<stdio.h>
#include<string.h>
const int N = 80;
int main()
{
    int  n, i;
    char str[N],ch = 'k';
    gets(str);
    n = strlen(str);
    if (ch > str[n - 1]){// 插入操作
        str[n] = ch;
    }
    else{
        for (i = n; ch < str[i - 1] && i > 0; i--) {
             str[i] = str[i - 1];
        }
        str[i] = ch;
    }
    str[n+1] = '\0';
    for (i = 0; i < n + 1; i++)//输出 插入后字符串
        printf("%c", str[i]);
    printf("\n");
    return 0;
}