编写程序void del( char *str )用指针实现将字符串尾部的*号全部删除,中间和首部的*号不删除。在主函数中实现字符串的输入和输出。 若输入 ****A*BC*DEF*G******* 则输出 ****A*BC*DEF*G
时间: 2023-12-18 22:29:22 浏览: 56
```python
# 定义函数del,用于删除字符串尾部的*号
def del_str_tail_star(str):
# 定义指针p指向字符串尾部
p = len(str) - 1
# 从尾部开始遍历字符串
while p >= 0:
# 如果当前字符是*号,则将指针p向前移动
if str[p] == '*':
p -= 1
# 如果当前字符不是*号,则将字符串尾部的*号全部删除
else:
str = str[:p+1]
break
# 返回删除后的字符串
return str
# 主函数
if __name__ == '__main__':
# 输入字符串
str = input("请输入字符串:")
# 调用函数del,删除字符串尾部的*号
str = del_str_tail_star(str)
# 输出删除后的字符串
print(str)
```
相关问题
编写C语言程序:利用指针实现只含有字母和*号的字符串处理,将字符串尾部连续的*号全部删除,利用子函数void strdel(char *s)
好的,您的第一个问题是关于编写一个只含有字母和*号的字符串处理程序,使用指针实现将尾部的连续*号删除的方法,正确吗?那么让我来为您解决这个问题。
以下是该程序的代码实现:
```c
#include <stdio.h>
#include <string.h>
void strdel(char *s) {
int len = strlen(s);
while (len > 0 && s[len - 1] == '*') {
s[--len] = '\0';
}
}
int main() {
char str[100];
printf("请输入一个只含有字母和*号的字符串:");
scanf("%s", str);
strdel(str);
printf("删除连续*号之后的字符串为:%s\n", str);
return 0;
}
```
该程序首先定义了一个 `void` 类型的子函数 `strdel(char *s)`,该函数传入一个指针类型的字符串参数 `s`。该函数利用指针遍历字符串的尾部,找到连续的 * 号并将其删除,最后返回处理后的字符串。
随后,在 `main` 函数中,首先定义了一个字符串类型的变量 `str`,然后提示用户输入只含有字母和*号的字符串。随后调用 `strdel` 函数,将处理后的字符串输出。
希望这个程序能够帮助您解决问题。如果您还有其他问题,请随时向我提问。
编写C语言程序:利用指针实现只含有字母和*号的字符串处理。将字符串尾部连续的*号全部删除,使用子函数void strdel(char *s)
这是一个比较基础的 C 语言编程问题。首先我们需要遍历字符串,找到最后一个不是*的字符的位置,然后将该位置之后的所有字符都替换为'\0'。
接下来是具体的代码实现:
```c
#include <stdio.h>
#include <string.h>
void strdel(char *s) {
int len = strlen(s);
int i, j;
for (i = len - 1; i >= 0; i--) {
if (s[i] != '*') {
break;
}
}
if (i < len - 1) {
s[i+1] = '\0';
}
}
int main() {
char s[100];
printf("请输入字符串:\n");
scanf("%s", s);
strdel(s);
printf("处理后的字符串为: %s\n", s);
return 0;
}
```
上面的代码定义了一个名为`strdel`的函数,该函数接受一个指向字符串的指针作为参数。函数内部通过遍历字符串找到最后一个不是*的字符,并将其之后的所有字符都替换为'\0'。
然后我们在`main`函数中调用`strdel`函数,将用户输入的字符串作为参数传递给它。最后打印出处理后的字符串即可。
需要注意的是,这里的字符串处理是在原有字符串上直接进行的,因此对原有字符串的修改是永久性的。如果需要保留原有字符串的话,可以先将其复制到另一个变量中再进行修改。