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 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度