算法笔记练习 3.6 字符串处理 问题 E: 字符串去特定字符

算法笔记练习 题解合集

题目链接

题目

题目描述
输入字符串s和字符c,要求去掉s中所有的c字符,并输出结果。

输入
测试数据有多组,每组输入字符串s和字符c。

输出
对于每组输入,输出去除c字符后的结果。

样例输入
goaod
a

样例输出
good

思路

用指针 ps 遍历字符串 s,若和 c 不等,输出字符。

细节:

  1. 注意各个输入函数之间的配合,例如本题用 gets 读入字符串后,输入缓冲区中字符串后面的换行已经被 gets 消耗掉了,可以直接用 scanf 读字符;但是 scanf 读完字符后记得处理紧跟的换行,否则会被下一轮的 gets 读到
  2. 本题没给数据范围,感觉略坑,但是AC之后测试了一下字符串 s 真的很小,长度 40 就能装下

代码

#include 
#define MAX 40
int main(){
	char s[MAX], c;
	while (gets(s)){
		scanf("%c", &c);
		getchar();  // 处理换行
		char *ps = s;
		while (*ps != '\0'){
			if (*ps != c)
				putchar(*ps); 
			++ps;
		}
		putchar('\n'); 
	} 
	return 0;
} 

你可能感兴趣的:(算法笔记)