用C语言编程:任意输入一个字符串,然后再输入从该串中删除的指定字符
时间: 2023-06-08 07:09:10 浏览: 126
好的,我可以帮你回答这个问题。以下是一个示例代码,可以实现你所需的功能:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100], ch;
int i, j;
printf("请输入一个字符串:");
scanf("%s", str);
printf("请输入要删除的字符:");
scanf(" %c", &ch);
/* 删除指定字符 */
for(i = j = 0; str[i] != '\0'; i++) {
if(str[i] != ch) {
str[j++] = str[i];
}
}
str[j] = '\0';
printf("删除后的字符串为:%s\n", str);
return 0;
}
```
你可以将以上代码复制到你的C语言编程环境中,编译并运行它。同时,也可以根据自己的需要对代码进行适当修改和优化。
相关问题
用C语言编程实现由键盘任意输入一串字符,再输入一个字符,在此串字符中查找是否有此字符,如果有从此串字符中删除此字符。如:原串为abcdef,删除字符为c,新串为abdef(还需存放在原来的数组中)。
好的,这是一个比较基础的字符串操作问题,我可以帮你解答。以下是C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100], ch, *p;
int len;
printf("请输入一串字符:");
fgets(str, 100, stdin);
len = strlen(str);
if (str[len - 1] == '\n') {
str[len - 1] = '\0';
len--;
}
printf("请输入要删除的字符:");
scanf("%c", &ch);
p = str;
while (*p) {
if (*p == ch) {
memmove(p, p + 1, len - (p - str));
len--;
} else {
p++;
}
}
printf("删除后的字符串为:%s", str);
return 0;
}
```
代码解释如下:
1. 首先定义一个字符数组`str`、要删除的字符`ch`以及一个指针`p`;
2. 通过`fgets`从键盘输入一串字符,并获取字符串长度`len`;
3. 如果输入的字符串最后一个字符是`\n`,则将其替换为`\0`,同时`len`减1;
4. 从键盘输入要删除的字符;
5. 定义指针`p`指向字符串`str`的首地址,使用`while`循环遍历字符串中的每个字符:
- 如果当前字符等于要删除的字符,使用`memmove`将后面的字符往前移动一位,并将`len`减1;
- 如果当前字符不等于要删除的字符,指针`p`向后移动一位;
6. 循环结束后,输出删除后的字符串。
注意事项:
- 在使用`fgets`时,需要注意输入的字符串长度不能超过数组的大小,否则会导致内存溢出;
- 在使用`memmove`时,需要注意参数的顺序,源地址在前,目的地址在后。
C语言编程实观以下功能 任意输入一个字符串,使用递日函数反装该字符串,输出结果;然后再使用冒泡排序法将该字符串中字符从小到大排序后输出结果
在C语言中,你可以实现这个功能通过以下几个步骤:
1. **递归反转字符串**:
- 定义一个递归函数,接收字符串的首地址和长度作为参数。
- 如果字符串长度大于1,则交换首尾两个字符,然后递归处理剩余的部分。
- 最后返回处理过的字符串首地址。
```c
#include <stdio.h>
#include <string.h>
void reverse(char *str, int start, int end) {
if (start < end) {
char temp = str[start];
str[start] = str[end];
str[end] = temp;
reverse(str, start + 1, end - 1);
}
}
void print_string(char *str) {
printf("Reversed String: %s\n", str);
}
```
2. **使用冒泡排序对字符串字符排序**:
- 定义一个辅助函数`bubble_sort`来实现冒泡排序算法,遍历字符串并比较相邻的字符,如果顺序不对就交换它们。
- 主函数中先反转字符串,再调用冒泡排序,最后打印排序后的字符串。
```c
void bubble_sort(char *str) {
int len = strlen(str);
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (str[j] > str[j + 1]) {
char temp = str[j];
str[j] = str[j + 1];
str[j + 1] = temp;
}
}
}
}
int main() {
char input[100];
printf("Enter a string: ");
fgets(input, sizeof(input), stdin); // 注意去除末尾的换行符
input[strlen(input) - 1] = '\0'; // 去除换行符
// 反转字符串
reverse(input, 0, strlen(input) - 1);
// 冒泡排序字符串
bubble_sort(input);
// 输出结果
print_string(input);
return 0;
}
```
阅读全文
相关推荐














