字符串插入算法
运用指针技术实现,将输入的两个字符串中第二个字符串插入到第一个字符串中指定输入数字位置字符的后面。(10分)
题目内容:
运用指针技术实现,将输入的两个字符串中第二个字符串插入到第一个字符串中指定输入数字位置字符的后面。
输入格式:
aghijk
bcdef
1
输出格式:
abcdefghijk
输入样例:
12345
9876
2
输出样例:
129876345
代码如下:
#include<iostream>
using namespace std;
int main()
{
char str1[166]={'\0'},str2[66]={'\0'},*p1,*p2;
//第一个数组要比两个数组原来的字符串长度和还要大,所以开大点
cin>>str1>>str2;//字符串里面不含空格,直接cin
int mark,len1=0,len2=0;
cin>>mark;
p1=str1;//指针指向str[0]
while(1)
{
if(*p1=='\0')break;
len1++;
p1++;
}//此时指向尾巴后一个元素
p2=str2;
while(1)
{
if(*p2=='\0')break;
len2++;
p2++;
}//算出str2长度
while(1)
{
*(p1+len2)=*p1;
//把mark后面的元素往后面搬len2个长度,
//如果从左边开始搬可能会覆盖右边元素
p1--;//从右往左
if(p1==&str1[mark]-1)break;
//指在mark时还要搬一次,所以在mark-1打破
}
p2=str2;
for(int i=0;i<len2;i++)
{
p1++;
*p1=*p2;
p2++;
}//把str2拷贝过去中间的位置
cout<<str1<<endl;
return 0;
}