Problem H. L05-08 去除*号

假定输入的字符串中只包含字母和* 号。请编写函数fun,它的功能是除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是****ABCDEFG。

输入

字符串

输出

除了前导的*号之外,其他*号全部删除的字符串

样例

标准输入复制文本
****A*BC*DEF*G*******
标准输出复制文本
****ABCDEFG
标准输入复制文本
**asd*s
标准输出复制文本
**asds
标准输入复制文本
*1*2*3*4
标准输出复制文本
*1234

解析:明显用指针解

#include <bits/stdc++.h>
void fun(char *a) 
{
	int i=0;
	char *p=a;
	//保留前面的*
	while(*p&&*p=='*') 
	{
		a[i]=*p;
		i++;
		p++;
	}
	//删除后面的*
	while(*p) 
	{
		if(*p!='*') 
		{
			a[i]=*p;
			i++;
	    }
	    p++;
    }
	a[i]='\0';
}
int main() 
{
	char s[80];
	gets(s);
	fun(s);
	puts(s);
	return 0;
}

解析2:不使用指针

#include <iostream>
#include <string>

using namespace std;

string removeStars(const string& input) {
    string result = "";

    // 处理前导的*号
    size_t i = 0;
    while (i < input.size() && input[i] == '*') {
        result += '*';
        i++;
    }

    // 处理中间的字符,跳过*号
    while (i < input.size()) {
        if (input[i] != '*') {
            result += input[i];
        }
        i++;
    }

    return result;
}

int main() {
    string input;
    getline(cin, input);

    string result = removeStars(input);

    cout << result << endl;

    return 0;
}

这个程序定义了一个名为 removeStars 的函数,该函数接受一个字符串作为参数,返回一个新的字符串,其中删除了除前导的 * 号之外的所有 * 号。在主函数中,程序从标准输入读取字符串,调用 removeStars 函数并输出结果。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值