是陽呀 2023-04-19 19:15 采纳率: 91.7%
浏览 16
已结题

计算机二级(每日一题)

他这个具体求法怎么求的呀,这个if条件限制的是什么,具体思路麻烦解答一下

img

  • 写回答

2条回答 默认 最新

  • Gary_HanJR 2023-04-19 22:19
    关注
    #include <stdio.h>
    
    char *a = "you";
    char b[] = "welcome you to China!";
    
    int main()
    {
        int i, j = 0;
        char *p;
    
        for (i = 0; b[i] != '\0'; i++) {
            if (*a == b[i]) {
                p = a;
    
                for (j = i; *p != '\0'; j++, p++) {
                    if (*p != b[j]) {
                        break;
                    }
                }
    
                if (*p == '\0') {
                    break;
                }
            }
        }
    
        printf("%s", &b[i]);
    
        return 0;
    }
    

    首先来是变量的定义和初始化部分:

    char *a = "you";
    char b[] = "welcome you to China!";
    int i, j = 0;
    char *p;
    

    这里定义了两个指向字符的指针 a 和 p,分别指向字符串常量 "you" 和字符数组 b 的首地址;还定义了两个整型变量 i 和 j,变量 j 初始化为 0。

    然后是程序的核心部分:

    for (i = 0; b[i] != '\0'; i++) {
        if (*a == b[i]) {
            p = a;
    
            for (j = i; *p != '\0'; j++, p++) {
                if (*p != b[j]) {
                    break;
                }
            }
    
            if (*p == '\0') {
                break;
            }
        }
    }
    printf("%s", &b[i]);
    
    

    首先是外层循环,对字符串 b 进行遍历,利用 i 来保存当前遍历到的字符在 b 中的下标,当遇到一个字符与 a 中的第一个字符相同时,进入内层循环。

    内层循环则利用指针 p 来遍历字符串 a,同时根据 j 的值检查 a 和 b 对应位置的字符是否相等。

    最后,如果 a 中所有字符均被匹配到了,那么 p 指向的位置就是 a 在 b 中首次出现的位置。于是程序打印出字符串 b 从该位置开始的所有字符,即为 &b[i]。

    总体上,这段程序的功能是:查找字符串 a 在字符串 b 中首次出现的位置,输出从该位置开始的所有字符。如果不存在这样的位置,则什么也不做。

    希望这段解释对您有所帮助。
    本题目是指我所列举的代码上稍作修改,只是在找到 a 在 b 中出现的位置之后,增加了一次打印操作。具体来说,利用 printf 函数打印从位置 i 开始的子串即可。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月24日
  • 已采纳回答 4月24日
  • 创建了问题 4月19日

悬赏问题

  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用