czb08191314 2023-09-06 07:41 采纳率: 88.5%
浏览 6
已结题

c语言pat基础题0906L1094

img

img


我的代码出现问题,本题希望可以得到大家的指导,谢谢你的帮助!

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2023-09-06 11:11
    关注

    供参考:

    #include <stdio.h>
    #include <string.h>
    int main()
    {
        
        char s[200];
        int  n, i;
        scanf("%s", &s);// 输入
        scanf("%d", &n);
        for (i = 0; i < n; i++)
        {
            int len = strlen(s); 
            int j = 0, k = 0, m = 0;
            char s2[200];      // 剪贴板
            int a = 0, b = 0;  // 剪切位置
            char c1[6], c2[6]; // 粘贴位置
            scanf("%d %d %s %s", &a, &b, &c1, &c2);
            for (j = a - 1; j < len; j++) // 第a个元素的数组下标为a-1
            {
                if (k < b - a + 1) // 剪贴字符串长度为 b-a+1
                    s2[k++] = s[j]; // 剪贴板存放
                s[j] = s[j + b - a + 1];
            }
            int flag = 0;
            int len1 = strlen(c1); 
            int len2 = strlen(c2);
            for (j = 0; j < len; j++)
            {
                int start = j, num;
                int sum1 = 0, sum2 = 0;
                for (num = 0; num < len1; num++)
                {
                    if (s[start] == c1[num])
                    {
                        sum1++;
                        start++;
                    }
                    if (sum1 == len1)
                    {
                        int q = 0;
                        for (q = 0; q < len2; q++)
                        {
                            if (s[start] == c2[q])
                            {
                                sum2++;
                                start++;
                            }
                            if (sum2 == len2)
                            {
                                flag = 1;
                                break;
                            }
                        }
                    }
                    if (flag == 1)
                        break;
                }
                if (flag == 1)
                    break;
            }
            if (flag == 1) 
            {
                for (m = len - 1; m >= j + len1 + k; m--)// 后移
                {
                    s[m] = s[m - k];
                }
                int number = 0;
                for (number = 0; number < k; number++)// 插入
                {
                    s[m - k + 1] = s2[number];
                    m++;
                }
            }
            else{
                int number = 0;
                for (m = len - k; m < len; m++)// 在最后插入
                {
                    s[m] = s2[number];
                    number++;
                }
            }
        }
        puts(s);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月15日
  • 已采纳回答 9月7日
  • 创建了问题 9月6日

悬赏问题

  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题