C语言输入一个字符串,再输入一个字符插入到字符串的首位,输出新的字符串。
时间: 2024-05-03 19:18:21 浏览: 12
可以使用C语言中的字符串函数来实现这个功能。以下是一种可能的解决方案:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
char c;
printf("请输入一个字符串:");
scanf("%s", str);
printf("请输入一个字符:");
scanf(" %c", &c); // 注意要在%c前加一个空格,避免读入上一个输入中的回车符
// 使用strcat函数将字符插入到字符串的首位
memmove(str + 1, str, strlen(str) + 1);
str[0] = c;
printf("新的字符串为:%s\n", str);
return 0;
}
```
运行结果:
```
请输入一个字符串:hello
请输入一个字符:w
新的字符串为:whello
```
相关问题
c语言输入一个字符串,输出字符串的全排列
要实现输出字符串的全排列,可以使用递归的方式来解决。以下是C语言实现的示例代码:
```C
#include <stdio.h>
#include <string.h>
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
void permute(char *str, int left, int right) {
if (left == right) {
printf("%s\n", str);
} else {
for (int i = left; i <= right; i++) {
swap((str + left), (str + i));
permute(str, left + 1, right);
swap((str + left), (str + i)); // 恢复原始的顺序
}
}
}
int main() {
char str[100];
printf("请输入字符串:");
scanf("%s", str);
int len = strlen(str);
printf("字符串的全排列:\n");
permute(str, 0, len - 1);
return 0;
}
```
以上代码中,我们定义了两个辅助函数 `swap` 和 `permute`。`swap` 函数用于交换两个字符的位置,`permute` 函数用于递归地生成全排列。
在 `main` 函数中,首先要求用户输入一个字符串,并利用 `strlen` 函数获取字符串的长度。然后调用 `permute` 函数生成字符串的全排列,其中的参数 `0` 和 `len - 1` 分别表示字符串的左边界和右边界。
运行以上代码,可以输出输入字符串的全排列。例如,输入字符串 "abc",则输出为:
abc
acb
bac
bca
cab
cba
C语言输入一个字符串,插入另一个输入的字符串
可以使用字符串函数 `strcat()` 和 `strcpy()` 完成字符串的插入操作。下面是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str1[100], str2[100];
int pos;
printf("请输入第一个字符串:");
scanf("%s", str1);
printf("请输入要插入的字符串:");
scanf("%s", str2);
printf("请输入插入的位置:");
scanf("%d", &pos);
// 将 str1 中第 pos 个字符之后的所有字符向后移动 strlen(str2) 个位置
memmove(str1 + pos + strlen(str2), str1 + pos, strlen(str1) - pos + 1);
// 将 str2 插入到 str1 的第 pos 个位置
memcpy(str1 + pos, str2, strlen(str2));
printf("插入后的字符串为:%s\n", str1);
return 0;
}
```
在程序中,首先通过 `scanf()` 读入两个字符串和插入的位置。然后使用 `memmove()` 函数将第一个字符串中第 `pos` 个字符之后的所有字符向后移动 `strlen(str2)` 个位置,留出空间给插入的字符串。最后使用 `memcpy()` 函数将插入的字符串复制到空出来的位置上。最后输出插入后的字符串即可。