C语言:输入2个字符串S1、S2,把S2插入到S1的第K个字符之后。S1、S2串原始长度均不超过30,插入后S1长度不超过60。 输入格式: 输入包括三行,依次是S1、S2,k。 输出格式: 输出S1,最后换行。
时间: 2024-05-01 08:20:17 浏览: 12
```c
#include <stdio.h>
#include <string.h>
int main() {
char s1[31], s2[31];
int k, len1, len2, i;
// 输入字符串s1、s2和插入位置k
scanf("%s%s%d", s1, s2, &k);
len1 = strlen(s1);
len2 = strlen(s2);
// 判断插入位置是否合法
if (k < 0 || k > len1) {
printf("插入位置不合法\n");
return 0;
}
// 将s2插入到s1的第k个字符之后
for (i = len1; i >= k; i--) {
s1[i + len2] = s1[i]; // 后移len2个位置
}
for (i = 0; i < len2; i++) {
s1[k + i] = s2[i]; // 插入s2
}
printf("%s\n", s1);
return 0;
}
```
注意:
1. 输入的字符串长度不超过30,因此可以定义字符数组长度为31,用于存储字符串。
2. 插入位置k的范围是0~len1,如果k小于0或大于len1,插入位置不合法。
3. 在将s2插入到s1的第k个字符之后时,需要先将s1中从第k个字符开始的所有字符后移len2个位置,以腾出插入空间。
相关问题
用c语言写输入字符串s1、s2,然后将s2插入到s1的第i个位置
您好,感谢您的提问。以下是用C语言实现将字符串s2插入到字符串s1的第i个位置的代码示例:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char s1[100], s2[100];
int i, j, len1, len2;
// 输入s1和s2
printf("请输入字符串s1:");
gets(s1);
printf("请输入字符串s2:");
gets(s2);
printf("请输入要插入的位置i:");
scanf("%d", &i);
len1 = strlen(s1); // 获取s1的长度
len2 = strlen(s2); // 获取s2的长度
// 把s2插入到s1的第i个位置
for (j = len1 - 1; j >= i - 1; j--)
{
s1[j + len2] = s1[j]; // 后移len2个位置
}
for (j = 0; j < len2; j++)
{
s1[i - 1 + j] = s2[j]; // 插入s2
}
// 输出插入后的字符串s1
printf("插入后的字符串s1为:%s", s1);
return 0;
}
```
请注意,这段代码只是一个示例,可能存在不足之处,需要根据实际需求进行修改和完善。希望能够帮助到您,如有任何疑问,请随时联系我。
c语言输入两个字符串s1,s2和s1中的一个字符k,将s2插入到s1中k第一次出现的位置的代码
,你可以直接回答该问题。
以下是将s2插入到s1中k第一次出现的位置的C语言代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char s1[100], s2[100], k;
printf("请输入两个字符串s1和s2: ");
scanf("%s %s", s1, s2);
printf("请输入s1中要插入s2的字符k: ");
scanf(" %c", &k);
char* position = strchr(s1, k); // 查找k在s1中第一次出现的位置
if (position != NULL) {
int index = position - s1; // 计算k在s1中的下标
memmove(s1 + index + strlen(s2), s1 + index, strlen(s1) - index + 1); // 移动k以后的字符
memcpy(s1 + index, s2, strlen(s2)); // 将s2插入到k所在的位置
printf("插入后的字符串: %s\n", s1);
} else {
printf("未找到字符k\n");
}
return 0;
}
```
希望上述代码能够解决您的问题,有关其他问题,欢迎继续提问。