假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做, 字符串中间和前面的*号不删除。 例如,字符串中的内容为:****A*BC*DEF*G*******,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为7,则字符串中的内容仍为:****A*BC*DEF*G*******。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。
时间: 2023-07-23 15:14:50 浏览: 98
好的,根据您的要求,我编写了如下的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_LEN 100
void fun(char *str, int n) {
int count = 0, len = 0;
// 统计字符串长度和尾部的*号数量
while (str[len] != '\0') {
if (str[len] == '*') {
count++;
}
len++;
}
// 如果尾部*号数量超过n,则删除多余的*号
if (count > n) {
int i = len - 1;
while (count > n) {
if (str[i] == '*') {
count--;
str[i] = '\0';
}
i--;
}
}
return;
}
int main() {
char str[MAX_LEN];
int n;
printf("请输入字符串:");
scanf("%s", str);
printf("请输入n的值:");
scanf("%d", &n);
fun(str, n);
printf("处理后的字符串为:%s\n", str);
return 0;
}
```
该函数中,我们首先统计字符串长度和尾部的*号数量。如果尾部*号数量超过n,则删除多余的*号。最后返回处理后的字符串。
需要注意的是,由于题目要求不得使用C语言提供的字符串函数,我们不能使用strlen函数来求字符串长度。因此,在代码中我们使用while循环来统计字符串长度和尾部的*号数量。
阅读全文