设计函数insert
,用指针实现在字符串s1中的指定位置n处插入字符串s2。
函数接口定义:
在这里描述函数接口。例如:
char* insert(char* s1, char* s2, int n);
其中,s1和s2为两个待处理字符串。n为字符串插入位置。
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
#include <stdio.h>
#include<stdlib.h>
#define Max 100
char* insert(char* s1, char* s2, int n);
int main()
{
char s1[Max],s2[Max];
int n;
scanf("%s", s1);
scanf("%s", s2);
scanf("%d", &n);
char* ss = insert(s1, s2, n);
printf("%s", ss);
return 0;
}
/* 请在这里填写答案 */
输入样例:
在这里给出一组输入。例如:
123456789
1234
7
输出样例:
在这里给出相应的输出。例如:
1234567123489
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <string.h>
char* insert(char* s1, char* s2, int n)
{
int i;
int len1 = strlen(s1);
int len2 = strlen(s2);
for (int i = len1; i >= n; i--)
{
s1[i + len2] = s1[i];
}
for (int i = 0; i < len2; i++)
{
s1[n + i] = s2[i];
}
return s1;
}
上面这个方法丢到vs里面会出现警告,但是pta正常?!下一种方法
#include <string.h>
char* insert(char* s1, char* s2, int n)
{
char result[100];
strncpy(result, s1, n);
result[n] = '\0';
strcat(result, s2);
strcat(result, s1 + n);
strcpy(s1, result);
return s1;
}
char* insert(char* s1, char* s2, int n)
{
char result[100];
int i, j,k;
for (i = 0, j = 0; s1[i]!='\0'; i++)
{
result[j++] = s1[i];
if (i == (n-1))
{
for (k = 0; s2[k] != '\0'; k++)
{
result[j++] = s2[k];
}
}
}
result[j] = '\0';
return result;
}
新方法!