2.规定输入的字符串中,只能包含字母和*号,编写函数,其功能是:除了字符串尾部的连续*号外,中间和前边的*号全部删除。主函数中输入字符串,调用函数,并输出结果字符串。例如:若字符串中的内容为:******A*BC*DEF*G****,删除后的字符串应是: ABCDEFG****
时间: 2024-01-10 07:21:11 浏览: 104
```python
def remove_stars(s):
# 从字符串尾部开始遍历,找到第一个不是*号的字符的索引
i = len(s) - 1
while i >= 0 and s[i] == '*':
i -= 1
# 从字符串开头开始遍历,找到第一个不是*号的字符的索引
j = 0
while j < len(s) and s[j] == '*':
j += 1
# 返回去除前导和尾部的*号后的字符串
return s[j:i+1]
# 主函数
s = "******A*BC*DEF*G****"
result = remove_stars(s)
print(result) # 输出:ABCDEFG****
```
相关问题
题目:规定输入的字符串中只包含字母和*号。请编写函数fun,其功能 是:将字符串尾部的*号全部删除,前面和中间的*号不动。 例如:字符串中的内容为:"****A*BC*DEF*G********", 应当是:*"****A*BC*DEF*G"
为了实现这个功能,你可以编写一个名为 `fun` 的 C 语言函数,该函数接受一个指向字符数组的指针,并遍历字符串,直到遇到字符串结尾或者遇到非星号字符。然后返回修改后的字符串。以下是一个简单的实现:
```c
#include <stdio.h>
#include <string.h>
// 函数声明,返回值为指向新字符串的指针(不是原始字符串,而是新分配的空间)
char* fun(char* str);
// 主要的 fun 函数实现
char* fun(char* str) {
int i = 0, j = strlen(str) - 1; // i 用于遍历字符串前半部分,j 从后往前遍历
while (i < j && str[i] == '*') { // 当前字符是 *,并且 i 不到 j 时
i++; // 前进一位
}
// 在找到非 * 字符或者到达字符串尾部时停止
char* new_str = (char*)malloc(strlen(str) - (j - i + 1)); // 重新分配内存空间
strncpy(new_str, str + i, strlen(str) - i); // 复制非 * 部分到新字符串
new_str[strlen(new_str) - 1] = '\0'; // 添加字符串结束符
return new_str;
}
int main() {
char str[] = "****A*BC*DEF*G********";
char* result = fun(str);
printf("Modified string: %s\n", result); // 输出结果
free(result); // 释放新字符串内存
return 0;
}
```
在这个代码中,`fun` 函数首先找到第一个非 * 字符的位置,然后创建一个新的字符串并复制这部分内容到新字符串中。注意,你需要确保在使用完新字符串后调用 `free` 函数来释放动态分配的内存。
c语言规定输入的字符串中只包含字母和*号,编写函数 fun,其功能是:将字符串中的前导* 号和尾部*号全部删除,中间的*号不删除。
在C语言中,你可以通过遍历字符串并判断字符是否为'*'以及头尾位置来实现这个功能。下面是一个简单的fun函数的示例:
```c
#include <stdio.h>
#include <string.h>
void remove_leading_trailing_star(char *str) {
int i = 0; // 初始化指针
// 遍历字符串,找到第一个非'*'字符
while (str[i] == '*' && i < strlen(str)) {
i++;
}
// 如果字符串全为'*'则直接返回空字符串
if (i == strlen(str)) {
str[0] = '\0'; // 空字符串
return;
}
// 移除头尾'*'
str[i] = '\0'; // 结束字符串
i++; // 跳过第一个非'*'
// 再次遍历字符串,找到最后一个非'*'字符
while (str[strlen(str) - 1] == '*' && i < strlen(str)) {
str[strlen(str) - 1] = '\0'; // 删除尾部'*'
i--;
}
}
int main() {
char input[] = "****example**";
remove_leading_trailing_star(input);
printf("处理后的字符串: %s\n", input); // 输出:example**
return 0;
}
```
此函数首先找到第一个非'*'字符的位置,然后截断到那里,并移除头尾的'*'。注意,在C语言中,字符串常量是以'\0'结束的。
阅读全文