7-37 (带注释)A-B (20分)

本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。

输入格式:

输入在2行中先后给出字符串A和B。两字符串的长度都不超过10的4次方,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。

输出格式:

在一行中打印出A−B的结果字符串。

输入样例:

I love GPLT!  It's a fun game!
aeiou

输出样例:

I lv GPLT!  It's  fn gm!

我的代码:

#include <stdio.h>
#include <string.h>
int main()
{
    
    
	char a[11000];                            // 依据题意开出数组,尽量要开大些 
	char b[11000];                            // 可以减少很多麻烦
	gets(a);                                  // 读入 A 数组 
	gets(b);                                  // 读入 B 数组 
	for(int i=0;i<strlen(a);i++)              // 将数组 A 中的元素拿出,如果和数组 B 重复
	{
    
                                             // 将其改为 '\n',因为数组 A 是以 '\n'结束的
		for(int z=0;z<strlen(b);z++)          // 所以当数组 A 中的元素必定不为 '\n',而找到这样的关系,可以 
		{
    
                                         // 做一些判断,控制输出
			if(a[i]==b[z])
			{
    
    
				a[i]='\n';
				break;                
			}
		}
	}
	for(int i=0;i<strlen(a);i++)              // 遍历数组 A ,'\n'不输出,不用理他了 
	{
    
    
		if(a[i]!='\n')
		{
    
    
			printf("%c",a[i]);
		}
	}
}

发现以前的自己写的太憨了,又改了下。

#include <stdio.h>
#include <string.h>
int main()
{
    
    
	int k = 1;
	char a[11000];                            // 依据题意开出数组,尽量要开大些 
	char b[11000];                            // 可以减少很多麻烦
	gets(a);                                  // 读入 A 数组 
	gets(b);                                  // 读入 B 数组 
	for(int i=0;i<strlen(a);i++)              // 将数组 A 中的元素拿出,如果和数组 B 重复
	{
    
                                             // 将变量 k 赋为0,控制输出。 
		for(int z=0;z<strlen(b);z++)          
		{
    
                                         
			if(a[i]==b[z])					  // 做一些判断,控制输出
			{
    
    
				k=0;
			}
		}
		if(k)
		{
    
    
			printf("%c",a[i]);
		}
		k=1;								  // 记得每次将变量 k 重新赋值为 1,因为每次循环 
	}										  // 都是个新的开始。 
}

博主是刚学习的小白,见本题网上似乎没有C语言的解析,故此下笔,如有谬误,还望斧正。

看到自己以前的代码,可以改进的太多了,就修改了下,但是目前无法测试,如果各位发现无法正常通过,希望能告诉我,我再来进行修改。

最后,各位看官,如果觉得写得不错,能不能给个赞啊。。

猜你喜欢

转载自blog.csdn.net/weixin_51304266/article/details/111214729