mushanyu_ 2022-09-20 20:26 采纳率: 64.3%
浏览 152
已结题

给定一个单词,如果该单词以er、ly或者ing后缀结尾, 则删除该后缀

给定一个单词,如果该单词以er、ly或者ing后缀结尾, 则删除该后缀(题目保证删除后缀后的单词长度不为0), 否则不进行任何操作

#include <stdio.h>
#include <stdlib.h>

int is (char a[],char b[])         //is函数作用是判断a数组结尾是否和b数组相同,若否返回0,否则把a数组后缀处换为/0并返回0
{
    int n1=strlen(a),n2=strlen(b);
    int i,j;
    for (i=n1-n2,j=0;i<n1;i++,j++)
    {
        if(a[i]!=b[j])
        {
            return 0;
        }

    }
    a[n1-n2]='\0';
    return 1;

}
int main()
{
    char s1[100];
    gets(s1);
    int n1=strlen(s1);
    char b[2]={'e','r'};
    char c[2]={'l','y'};
    char d[3]={'i','n','g'};
    if (is(s1,b))
    {

        printf("%s",s1);
        return 0;
    }
        if (is(s1,c))
    {

        printf("%s",s1);
        return 0;
    }
        if (is(s1,d))
    {

        printf("%s",s1);
        return 0;
    }

    printf("%s",s1);


    return 0;
}


输入referer输出仍为referer

新学了指针,想尝试利用函数对字符串判断+处理,但是无效

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-09-20 20:31
    关注

    char b[2]={'e','r'};
    char c[2]={'l','y'};
    char d[3]={'i','n','g'};
    改为
    char b[]="er";
    char c[]="ly";
    char d[]="ing";
    ====
    你的写法有错误,是因为这三个字符串没有字符串结束符。用strlen计算的长度不是字符串实际的长度。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月20日
  • 已采纳回答 9月20日
  • 创建了问题 9月20日

悬赏问题

  • ¥15 爬虫爬取网站的一些信息
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含
  • ¥15 麒麟V10桌面版SP1如何配置bonding
  • ¥15 Marscode IDE 如何预览新建的 HTML 文件
  • ¥15 K8S部署二进制集群过程中calico一直报错