本题要求你计算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语言的解析,故此下笔,如有谬误,还望斧正。
看到自己以前的代码,可以改进的太多了,就修改了下,但是目前无法测试,如果各位发现无法正常通过,希望能告诉我,我再来进行修改。
最后,各位看官,如果觉得写得不错,能不能给个赞啊。。