1808 Problem C:字符串的查找删除

原创 2018年04月17日 18:39:40

题目描述

给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。

输入

输入只有1组数据。
输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。

输出

删除输入的短字符串(不区分大小写)并去掉空格,输出。

样例输入

in
#include 
int main()
{

printf(" Hi ");
}

样例输出

#clude
tma()
{

prtf("Hi");
}

提示

注:将字符串中的In、IN、iN、in删除。

思路:
题目中删除字符要求不分大小写,则可将先将原字符存储在二维数组,再讲字母全部转化为小写进行比较。

判断逻辑:遍历字符串,某字符与短字符第一个字符相同;在判断下一位字符是否相同,直至完全相同,完全相同则跳过;

代码如下:

#include <cstdio>
#include <cstring>

char del[1000], str[1001][1001], ans[1001][1001];
	
int main()
{
	int index = 0;	
	gets (del);
	int len1 = strlen (del);
	
	while (gets (str[index++])) 					    //读入数据; 
   
   	for(int i = 0; i < len1; i++){  					//全部转化为小写字母; 
     	if(del[i] >= 'A' && del[i] <= 'Z') {  
      	  	del[i] = del[i] - 'A' + 'a';  
   		}  
    }  

	for(int i = 0; i < index; i++) {  
			int len2 = strlen (str[i]);
			for (int j = 0; j < len2; j++) {
					ans[i][j] = str[i][j];			//用另一数组存储原数据,然后将其转化为小写字母; 
					if (str[i][j] >= 'A' && str[i][j] <= 'Z') {
						str[i][j] = str[i][j] - 'A' + 'a';
				}
			}
			
			for (int j = 0, k = 0; j < len2; ) {		
				if (str[i][j + k] == del[k]) {			//判断是否与短字符第一个字符相同; 
					k++;								
					if (k == len1)  {					//若完全相同则跳过; 
						j = j + k;
						k = 0;
					}
				}
				else {
					if (str[i][j] != ' ')		printf ("%c", ans[i][j]);	//输出原字符; 
					j++;
					k = 0;
				}
			}
		printf ("\n");
	}

 	return 0;
}      

本题疑问:当使用scanf函数读取短字符,则无法AC,而gets函数则可以通过;

如果有大神知道为何,希望不吝赐教;

1808 Problem C 字符串的查找删除

问题 C: 字符串的查找删除 时间限制: 1 Sec 内存限制: 32 MB 献花: 100 解决: 49 [献花][花圈][TK题库] 题目描述 给定一个短字符串(不含空格),再给定若...
  • fantasydreams
  • fantasydreams
  • 2018-01-14 16:49:21
  • 85

c语言字符串分割,截取,子串查找,插入,删除

  • 2014年03月06日 21:26
  • 7KB
  • 下载

编程实现删除字符串中所有给定的子串

#include #include #include /*删除指定字符*/ char *delchar(char *str, char c) { char *p = NULL, *hea...
  • shihui512
  • shihui512
  • 2013-04-19 11:42:47
  • 1409

Problem D: C语言实验——删除指定字符

删除指定字符
  • l769255844
  • l769255844
  • 2016-01-16 20:16:15
  • 1499

C语言链表实现字符串输入、查找、删除等

  • 2009年04月24日 16:20
  • 3KB
  • 下载

实验9 Problem C: 编写函数:字符串的复制 之一 (Append Code)

Description 将输入的一个字符串s拷贝输出。 ------------------------------------------------------------------...
  • ligenzhi131619
  • ligenzhi131619
  • 2016-12-14 20:45:09
  • 519

C语言——删除字符串中的指定子串

问题描述:  在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。 要求实现函数:  int delete_sub_str(const char *str, cons...
  • Eleanor_12
  • Eleanor_12
  • 2016-12-25 21:20:26
  • 677

第15周 oj Problem C: 字符串逆序输出

问题及代码: /*Copyright(c)2016,烟台大学计算机学院 all rights reserved. 作者:曹欣宇 完成日期:2016年12月12日 题目描述 编写一个函数,功能是使...
  • cxy201658503125
  • cxy201658503125
  • 2016-12-12 19:20:51
  • 313

C语言字符串操作--删除子串

  测试空间旗下大头针出品   好长时间没有更新blog,因为最近有点高负荷了。带了三个班的课,最近我的那个107已经讲到了字符数组,这个班可能最近已经适应我的讲课风格。适应了,我也该走了。总体上感觉...
  • djbtestingsky
  • djbtestingsky
  • 2007-08-15 08:25:00
  • 2081

C语言实现字符串中查找字符串

查找字符串函数实现://find string in string, return the first start location or -1 if can not find int StringF...
  • xhhjin
  • xhhjin
  • 2013-01-15 16:14:24
  • 25108
收藏助手
不良信息举报
您举报文章:1808 Problem C:字符串的查找删除
举报原因:
原因补充:

(最多只允许输入30个字)