前言:本期是关于pta题目 A-B的详解,内容包括四大模块:题目,代码实现,大致思路,代码解读,今天你c了吗?
题目:
本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。
输入格式:
输入在2行中先后给出字符串A和B。两字符串的长度都不超过104,并且保证每个字符串都是由可见的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 arr[10001]={0};
char ch[10001]={0};
gets(arr);
gets(ch);
int len=strlen(arr);
int i = 0;
for(i=0;i<len;i++)
{
if(strchr(ch,arr[i]))
{
;
}
else
{
printf("%c",arr[i]);
}
}
return 0;
}
大致思路:
1. A字符串中的每个字符都要在B字符串中进行查找,若是B字符串中有此字符,则不打印此字符
若是没有此字符,则打印此字符
2. 使用strchr函数,在B字符串中查找A字符串中的每一个字符
strchr函数介绍如下:
#include <string.h>
char *strchr( const char *str, int ch );
功能:函数返回一个指向str 中ch 首次出现的位置,当没有在str 中找ch到返回NULL。
代码解读:
part 1:读取字符串
char arr[10001]={0};
char ch[10001]={0};
gets(arr);
gets(ch);
使用gets去读字符串的优势是它可以一并读取字符串中的空格
part 2:打印
int len=strlen(arr);
int i = 0;
for(i=0;i<len;i++)
{
if(strchr(ch,arr[i]))
{
;
}
else
{
printf("%c",arr[i]);
}
}
1. 使用strlen函数求出A字符串的长度,由此可以for循环遍历整个字符串
2. 若是A字符串中的某个字符在B字符串中出现了,则strchr会返回此字符在B字符串中初次出现的地址
若是此字符在B字符串中没有出现,则strchr会返回NULL
3. strchr函数若返回一个字符的地址,则说明此字符是需要删除的,不打印,可以不做处理
strchr函数若返回NULL,则说明此字符无需删除,要打印