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

给定一个单词,如果该单词以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日

悬赏问题

  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
  • ¥20 XP系统在重新启动后进不去桌面,一直黑屏。
  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥15 无线移动边缘计算系统中的系统模型
  • ¥15 深度学习中的画图问题
  • ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条