Ar_ch 2022-01-25 22:39 采纳率: 100%
浏览 48
已结题

pta的题,大家的意见,能不能按我的逻辑改写代码?谢谢!

本题要求你计算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[100000],b[100000];
    gets(a);
    gets(b);
   long i,j,k,c,d;
    c=strlen(a);
    d=strlen(a);
    for (i=0;i<c;i++)
        for(j=0;j<d;j++)
            if(a[i]==b[j])
            {
             for(k=i;k<c;k++)
                 a[k]=a[k+1];
            }
        printf("%s\n",a);
}

逻辑应该对的,但测试点只对两个。
大家的意见,能不能按我的逻辑改写代码?谢谢!

  • 写回答

2条回答 默认 最新

  • 关注
    c=strlen(a);
    d=strlen(a);
    

    你两个都是a的长度
    d=strlen(a);应该改成 d=strlen(b);
    你题目的解答代码如下:

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        char a[100000],b[100000];
        gets(a);
        gets(b);
        long i,j,k,c,d;
        c=strlen(a);
        d=strlen(b); //改成b
        for (i=0;i<c;i++)
            for(j=0;j<d;j++)
            {
                if(a[i]==b[j])
                {
                    for(k=i;k<c;k++)
                        a[k]=a[k+1];
                    i--;
                    c--;
                    break;
                }
            }
        printf("%s\n",a);
    }
    

    你删除一个字符之后i和c都要减1

    img

    img

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月5日
  • 已采纳回答 1月28日
  • 创建了问题 1月25日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助