1. 若有串如“****A*BC*DEF*G*******”,编写程序,可以将串中任意位置的星号删除。
时间: 2024-05-03 09:14:55 浏览: 46
您可以使用以下的C++代码来删除字符串中的星号:
```cpp
#include <iostream>
#include <string>
void removeStars(std::string& str) {
int i = 0;
int j = 0;
while (j < str.length()) {
if (str[j] != '*') {
str[i] = str[j];
i++;
}
j++;
}
str.resize(i);
}
int main() {
std::string str = "****A*BC*DEF*G*******";
removeStars(str);
std::cout << str << std::endl;
return 0;
}
```
这段代码中,`removeStars`函数会遍历字符串,将非星号字符移动到字符串的前面,最后调整字符串的长度来删除星号。在`main`函数中,我们定义了一个测试字符串,并调用`removeStars`函数来删除其中的星号。最后,我们输出删除星号后的字符串。
相关问题
C程序题) 编写程序,实现将字符串中*号全部删除, 例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:ABCDEFG。 若输入 ****A*BC*DEF*G******* 则输出 ABCDEFG
你可以使用以下C程序来实现将字符串中的*号全部删除的功能:
```c
#include <stdio.h>
#include <string.h>
void removeStars(char *str) {
int len = strlen(str);
int i, j;
for (i = 0, j = 0; i < len; i++) {
if (str[i] != '*') {
str[j++] = str[i];
}
}
str[j] = '\0';
}
int main() {
char str[100];
printf("请输入字符串:");
scanf("%s", str);
removeStars(str);
printf("删除后的字符串为:%s\n", str);
return 0;
}
```
运行程序后,输入字符串,程序会将其中的*号全部删除,并输出删除后的字符串。
编写程序void del( char *str )用指针实现将字符串尾部的*号全部删除,中间和首部的*号不删除。在主函数中实现字符串的输入和输出。 若输入 ****A*BC*DEF*G******* 则输出 ****A*BC*DEF*G
```c
#include <stdio.h>
void del(char *str) {
if (str == NULL) {
return;
}
int len = 0;
int count = 0;
// 计算字符串长度和尾部*号的个数
while (str[len] != '\0') {
len++;
if (str[len] == '*') {
count++;
}
}
// 从尾部开始删除*号
for (int i = len - 1; i >= 0; i--) {
if (str[i] == '*') {
count--;
} else {
break;
}
}
// 输出字符串,将尾部的*号替换为?
for (int i = 0; i < len - count; i++) {
if (str[i] == '*') {
printf("?");
} else {
printf("%c", str[i]);
}
}
}
int main() {
char str[] = "****A*BC*DEF*G*******";
del(str); // 输出:****A*BC*DEF*G?
return 0;
}
```
阅读全文