2.编写程序,实现升级版删除指定字符程序:如果字符串str中存在多个(假设n个)指定字符ch,让用户选择删除字符串str中的第几个指定字符。实现要求如下: (1)实现 unsigned int NumofChar(char *str, char ch)函数,作用是检查字符串str中有多少个ch字符,形参str 指向被检索的字符串,形参ch是指定查找的字符。 (2)实现 char * DelChar(char * str, char ch, unsinged int n)函数,作用是删除字符串str中的第n个ch字符,形参str 指向被检索的字符串,形参ch是指定要删除的字符,参数n指定是第几个ch。
时间: 2024-03-19 20:44:53 浏览: 155
下面是实现该程序的代码:
```c
#include <stdio.h>
#include <string.h>
unsigned int NumofChar(char *str, char ch) {
unsigned int count = 0;
while (*str) {
if (*str == ch) {
count++;
}
str++;
}
return count;
}
char *DelChar(char *str, char ch, unsigned int n) {
unsigned int count = 0;
char *p = str;
while (*str) {
if (*str == ch) {
count++;
if (count == n) {
memmove(str, str + 1, strlen(str));
break;
}
}
str++;
}
return p;
}
int main() {
char str[100], ch;
unsigned int n;
printf("请输入字符串:");
fgets(str, 100, stdin);
printf("请输入要删除的字符:");
scanf("%c", &ch);
getchar(); // 读取换行符
unsigned int count = NumofChar(str, ch);
printf("字符串中共有 %u 个 %c 字符\n", count, ch);
if (count == 0) {
printf("无需删除\n");
} else {
printf("请输入要删除的 %c 字符的位置(1-%u):", ch, count);
scanf("%u", &n);
getchar(); // 读取换行符
if (n > count) {
printf("无效位置\n");
} else {
char *p = DelChar(str, ch, n);
printf("删除后的字符串:%s\n", p);
}
}
return 0;
}
```
输入样例:
```
请输入字符串:hello world
请输入要删除的字符:l
字符串中共有 3 个 l 字符
请输入要删除的 l 字符的位置(1-3):2
```
输出样例:
```
删除后的字符串:heo world
```
解释:删除了第二个 l。
阅读全文