题目:有已排好序的字符串 a,下面的程序是将字符串 s 中的每个字符按升序的规律插入到 a 中。例如:a="cehiknqtw" s="fbla"
这个题目大体上可以分为两步:
1.找到插入的位置,也就是将字符串s的每个字符都和a的字符相比,知道a中的字符大于s中的字符。
2.将s中的字符插入
代码如下:
#include <stdio.h>
#include <string.h>
int main(){
char a[20] = "cehiknqtw";
char s[] = "fbla";
int j;
for(int i = 0; s[i] != '\0'; i++){ //将所有字符都插入
j=0;
while(s[i] >= a[j]&&a[j]!='\0') //这个while循环找到插入位置
j++;
for(int k = strlen(a)-1 ; k>=j ; k--){ //这个for循环将后面的所有字符向后移一位
a[k+1] = a[k];
}
a[j] = s[i]; //最后赋值到正确的位置
}
printf("%s",a);
}
运行结果如下: