描述
编写算法,实现下面函数的功能。函数void insert(char*s,char*t,int pos)将字符串t插入到字符串s中,插入位置为pos(插在第pos个字符前)。假设分配给字符串s的空间足够让字符串t插入。
(说明:不得使用任何库函数)
输入
多组数据,每组数据有三行,第一行为插入的位置pos,第二行为要被插入的字符串s,第三行为待插入的字符串t。当pos为“0”时输入结束。
输出
对于每组数据输出一行,为t插入s后的字符串。
输入样例 1
1 abcde abc 2 acd baaaa 0
输出样例 1
abcabcde abaaaacd
思路:
习惯用string了,但是题目说必须用char*类型当参数…不过string转char*是可以直接转换的,如下
string 转 char*:直接赋值即可
char[]转string:遍历赋值
参考string类型和char类型相互转换_caojinpei123的博客-CSDN博客_char类型转string
转换为string的话输出比较方便。
题目中说是插入,其实不一定真的要操作,最后只要输出正确的结果就行。那么就是控制输出格式,把两个字符串根据pos划分为三次输出:
第一次是0~pos-1,这时可以理解为“还没有插入”,正常输出主串的字符就行;
第二次是到了pos-1的位置,那么要全部输出字串;
第三次就是“字串插入完毕”,继续输出主串中未输完的字符即可。
这样比较简单,而且也符合题目要求~
#include#include using namespace std; void Insert(char* main, char* sub, int pos) { string m = main, s = sub; for (int i = 0; i < pos-1; i++) cout << m[i]; for (int i = 0; i < s.length(); i++) cout << s[i]; for (int i = pos-1; i < m.length(); i++) cout << m[i]; cout << endl; } int main() { int n; while (cin >> n && n != 0) { char main[50] = {}, sub[50] = {}; cin >> main >> sub; Insert(main, sub, n); } return 0; }



