4、输入一个长度为N的字符串A,从其第K个字符起,插入长度为M的字符串B,输出新的长度为N+M的字符串,其中N、M均小于100,且K<=N。
时间: 2024-03-12 20:50:08 浏览: 18
下面是一个 C 语言的示例程序,可以实现题目要求:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char strA[MAX_LEN + 1], strB[MAX_LEN + 1];
int N, M, K;
// 输入字符串 A、B 和参数 N、M、K
printf("Please enter string A (length <= %d): ", MAX_LEN);
scanf("%s", strA);
printf("Please enter string B (length <= %d): ", MAX_LEN);
scanf("%s", strB);
printf("Please enter N, M, K (N, M <= 100, K <= N): ");
scanf("%d %d %d", &N, &M, &K);
// 检查输入参数是否合法
if (N < 0 || N > MAX_LEN || M < 0 || M > MAX_LEN || K < 0 || K > N) {
printf("Invalid input!\n");
return 1;
}
// 将字符串 B 插入到字符串 A 中
memmove(strA + K + M, strA + K, N - K + 1);
memcpy(strA + K, strB, M);
// 输出新的字符串
printf("Result: %s\n", strA);
return 0;
}
```
该程序首先通过 `scanf()` 函数从标准输入中读取输入参数,然后使用 `memmove()` 和 `memcpy()` 函数将字符串 B 插入到字符串 A 的指定位置,最后输出新的字符串。值得注意的是,由于字符串 A 的长度可能会变化,我们需要在 `memmove()` 函数中使用 `N - K + 1`,而不是 `N`,来计算需要移动的字节数。