编写程序void del( char *str )用指针实现将字符串尾部的*号全部删除,中间和首部的*号不删除。在主函数中实现字符串的输入和输出。 若输入 ****A*BC*DEF*G******* 则输出 ****A*BC*DEF*G
时间: 2023-12-18 22:29:22 浏览: 111
```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)
```
相关问题
编写函数strcat(char *str1,char *str2,char *str3),将字符串str1和str2连接后放入str3中,并编写main()调用上述函数实现2个字符串的连接。
### 回答1:
这段代码是一个名为strcat的函数,其功能是将两个字符串str1和str2连接起来,并将结果存储在一个字符串str3中。主函数main调用该函数,将两个字符串作为参数传递给该函数,然后将结果字符串输出。该函数是将字符串拼接的常见方式之一。
### 回答2:
问题要求编写一个函数strcat(char *str1, char *str2, char *str3),将字符串str1和str2连接后放入str3中,并编写main()函数调用上述函数实现2个字符串的连接。
这里给出函数的实现方法:
```c++
#include <iostream>
#include <string.h>
using namespace std;
void strcat(char *str1, char *str2, char *str3) {
int len1 = strlen(str1);
int len2 = strlen(str2);
int i, j = 0;
for (i = 0; i < len1; ++i) {
str3[i] = str1[i];
}
for (i = len1; i < len1 + len2; ++i) {
str3[i] = str2[j++];
}
str3[i] = '\0'; // 加上字符串的结束标志
}
int main() {
char str1[100], str2[100], str3[200];
cout << "请输入第一个字符串:" << endl;
cin >> str1;
cout << "请输入第二个字符串:" << endl;
cin >> str2;
strcat(str1, str2, str3);
cout << "连接后的字符串为:" << str3 << endl;
return 0;
}
```
首先我们定义了一个strcat函数,该函数接受三个参数:str1代表第一个字符串,str2代表第二个字符串,str3代表将要返回的字符串。该函数的实现方法为:先计算出str1和str2的长度,然后将str1中的字符复制到str3中,接着再将str2中的字符复制到str3中,最后加上字符串的结束标志'\0'。
在main函数中,我们先定义了3个字符数组来存储输入的两个字符串和连接后的结果。接着,我们调用strcat函数将str1和str2合并,并将结果存储在str3中,最后输出str3即为连接后的结果。
综上所述,以上程序实现了功能,可将两个字符串连接起来,并输出连接后的结果。
### 回答3:
函数strcat(char *str1,char *str2,char *str3)的作用是将两个字符串str1和str2连接起来,并将结果存放在str3中。其中str1和str2是所要连接的字符串,str3是存放结果的字符串,其函数原型为:
char *strcat(char *dest, const char *src);
该函数在执行时,首先查找dest字符串的尾部,并将src字符串中的字符逐笔复制到dest字符串中,直到遇到字符串结束符号 \0 为止,最后返回dest指针。
根据题意,编写函数strcat(char *str1,char *str2,char *str3)需定义如下:
```C
void strcat(char *str1, char *str2, char *str3) {
int i,j;
for(i = 0; str1[i] != '\0'; i++) {
str3[i] = str1[i]; //将str1复制到str3中
}
for(j = 0; str2[j] != '\0'; j++) {
str3[i+j] = str2[j]; //将str2接在str1后面复制到str3中
}
str3[i+j] = '\0'; //标记字符串结束符
}
```
该函数的实现很简单,首先遍历str1,将其复制到str3中,然后再遍历str2,将其接在str1的尾部,并继续复制到str3中,最后给str3添加结束符。
接下来,编写main()函数,调用strcat()函数来实现两个字符串的连接。
```C
#include<stdio.h>
#include<string.h>
void strcat(char *str1, char *str2, char *str3);
int main() {
char str1[100], str2[100], str3[200];
printf("请输入第一个字符串:");
scanf("%s", str1);
printf("请输入第二个字符串:");
scanf("%s", str2);
strcat(str1, str2, str3);
printf("两个字符串连接后的结果是:%s\n", str3);
return 0;
}
```
在main()函数中,首先声明了三个字符串变量str1、str2和str3,用来存储用户输入的两个字符串和两个字符串连接后的结果。然后,使用scanf()函数从用户处分别获取两个字符串str1和str2,并调用strcat()函数将其连接后的结果存放在str3中。最后,输出连接后的字符串。
这样,就完成了编写函数strcat(char *str1,char *str2,char *str3)并通过main()函数调用实现两个字符串连接的任务。
用c++4. 假定输入的字符串中只包含字母和*号。请编写函数void fun(char *a),其功能是除了尾部的*号之外,将字符串中的其它的*号全部删除。 例如,字符串中的内容****A*BC*DEF*G*******。删除后,字符串中的内容应当是ABCDEFG*******。
你可以使用两个指针来解决这个问题。一个指针用于遍历字符串,另一个指针用于记录有效字符的位置。具体的实现如下:
```cpp
void fun(char *a) {
if (a == nullptr) {
return;
}
int len = strlen(a);
int validIndex = 0; // 记录有效字符的位置
for (int i = 0; i < len; i++) {
if (a[i] != '*') {
a[validIndex++] = a[i];
}
}
// 将剩余的字符设置为*
for (int i = validIndex; i < len; i++) {
a[i] = '*';
}
}
```
这个函数首先判断输入指针是否为空,然后遍历字符串,将非*字符复制到有效字符的位置,并更新有效字符的位置。最后,将剩余的字符设置为*。
阅读全文