老抓狂啦 2022-10-25 18:53 采纳率: 66.7%
浏览 42
已结题

聚合密令,输入若干行密令,然后进行处理

输入若干行密令,然后进行处理,要求如下:
①第一条密令的格式:I #s s#cy #d
其中若干个“#x”(x 表示要替换的类型)需要依次被后面几行密令进行替换。
②接下来若干行密令要按照第一条命令中“#x”出现的顺序依次在第一条密令中
进行替换,且保证密令的数据类型一一对应。x 为一个英文字符。
③输出替换后的密令
输入格式:
按照上面的要求输入若干行密令
输出格式:
一行字符串
输入样例 1:
I #s s#cy #d
should
a
666
输出样例 1:
I should say 666
输入样例 2:
H#sy H#c#seen
app
a
llow
输出样例 2:
Happy Halloween

  • 写回答

2条回答 默认 最新

  • 关注

    查找#x并用后面输入的字符替换,运行结果如下:

    img

    代码:

    #define _CRT_SECURE_NO_WARNINGS 1
    #include <stdio.h>
    #include <string.h>
    //判断字符是否是英文字符
    int isalpha(char c)
    {
        if (c >= 'a' && c <= 'z')
            return 1;
        if (c >= 'A' && c <= 'Z')
            return 1;
        return 0;
    }
    
    
    int main()
    {
        char ml[100]; //密令
        char th[100]; //替换的字符串
        int i = 1;
        int j = 0;
        char dst[200] = { 0 };
        gets_s(ml);
        while (ml[i] != '\0' && ml[i]!='\n')
        {
            if (ml[i - 1] == '#' && isalpha(ml[i]) )
            {
                gets_s(th); //读取替换字符
                strcat(dst, th);
                j = strlen(dst);
                i++;
            }
            else
            {
                dst[j++] = ml[i-1];
            }
            i++;
        }
        //最后一个字符
        if (i >= 2 && ml[i - 2] != '+')
            dst[j] = ml[i - 1];
    
        printf("%s", dst);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月7日
  • 已采纳回答 10月30日
  • 创建了问题 10月25日

悬赏问题

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