题目1049:字符串去特定字符——九度OJ
题目1049:字符串去特定字符
http://ac.jobdu.com/problem.php?pid=1049
时间限制:1 秒 内存限制:32 兆
- 题目描述:
-
输入字符串s和字符c,要求去掉s中所有的c字符,并输出结果。
- 输入:
-
测试数据有多组,每组输入字符串s和字符c。
- 输出:
-
对于每组输入,输出去除c字符后的结果。
- 样例输入:
-
heallo a
- 样例输出:
-
hello
关于这个题目,有几个地方要吐槽一下:
1、没有说明数据范围
2、输入输出没有明确的格式说明
下面是两个AC的代码,大家自己对比着看吧
代码一:

1 #include <stdio.h> 2 #include <string.h> 3 4 int main() 5 { 6 char str[1000000],ch,ch1; 7 int len,i; 8 while (gets(str)) 9 { 10 scanf("%c",&ch); 11 len = strlen(str); 12 for (i=0;i<len;i++) 13 { 14 if (str[i] != ch) 15 printf("%c",str[i]); 16 } 17 printf("\n"); 18 ch1 = getchar(); 19 } 20 return 0; 21 }
代码二:

1 #include<stdio.h> 2 3 int main() 4 { 5 char a[1000000],ch; 6 int i; 7 scanf("%s",a); 8 getchar(); 9 while(scanf("%c",&ch)!=EOF) 10 { 11 getchar(); 12 for(i=0;a[i]!='\0';i++) 13 { 14 if(a[i]!=ch) printf("%c",a[i]); 15 } 16 printf("\n"); 17 18 scanf("%s",a); 19 getchar(); 20 } 21 return 0; 22 }
解析:
关于算法:投机取巧的做法是直接判断每一个字符是否题目不给输出的字符然后判断是否输出该字符。
关于输入输出格式的说明:
gets()是输入一整行。换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。
scanf()利用%s是输入遇到空白符(空格、Tab或回车)时截止。
在输入字符数据(%c)时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。
例如:
scanf
(
"%c%c%c"
,&a,&b,&c);
输入为:
d e f
则把'd'赋予a, ' (空格)'赋予b,'e'赋予c。因为%c 只要求读入一个字符,后面不需要用空格作为两个字符的间隔,因此把' '作为下一个字符送给b。
只有当输入为:def 时,才能把'd'赋于a,'e'赋予b,'f'赋予c。 如果在格式控制中加入空格作为间隔,
如
scanf
(
"%c %c %c"
,&a,&b,&c);
则输入时各数据之间可加空格。
如果格式控制串中有非格式字符则输入时也要输入该非格式字符。
用%s来输入字符串的话,不接受回车符。
然后呢,这个题目就要慢慢试试看到底是字符串和字符同一行呢还是分作两行。另外,再试试看输出时每一组之间要不要回车。麻烦吧……
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
2013-11-17 整数划分问题【转】