PTA L1-011 A-B(详解)

前言:本期是关于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 );

功能:函数返回一个指向strch 首次出现的位置,当没有在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,则说明此字符无需删除,要打印

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值