SECANTVIRUS 2022-10-09 20:18 采纳率: 100%
浏览 23
已结题

问题求解(c语言 || 字符串)

求解
代码作用是去除输入字符串中所有的'is'(不区分大小写)然后输出
代码如下

#include <stdio.h>
#include <string.h>
int main()
{
    char str[1000];
    int len,i=1;
    gets(str);
    len=strlen(str);
    while(i<len)
    {
        if(str[i]!='i'&&str[i]!='I')
            printf("%c",str[i]);
        else if(str[i+1]=='s'||str[i+1]=='S')
            i=i+1;
        i++;
    }
    return 0;
}

运行时出现了两个问题
一:
当输入字符串出现's'时,会连同这个's'和在其之前所有连续的'i'全部删除
e.g. 输入:"iiss"
输出:"s"
(或者更夸张一点)
e.g. 输入:"ii……iiss"(中间省略n个'i')
输出:"s"
二:
将代码中的 i=i+1; 换成 i++ 后运行结果是不同的
也就是说改成了i++后无法满足题目要求

求解答

  • 写回答

2条回答 默认 最新

  • 浪客 2022-10-09 20:24
    关注
    
    #include <stdio.h>
    #include <string.h>
    int main()
    {
        char str[1000] = "isis";
        int len, i = 0; //
        gets(str);
        len = strlen(str);
        while (i < len)
        {
            if (str[i] != 'i' && str[i] != 'I')
                printf("%c", str[i]);
            else if (str[i + 1] == 's' || str[i + 1] == 'S')
                i = i + 1;
            else                 //
                putchar(str[i]); //
            i++;
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月17日
  • 已采纳回答 10月9日
  • 创建了问题 10月9日

悬赏问题

  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化