C语言中二重循环的问题

C语言中二重循环的问题,第1张

二重神侍循亮春环的过程

第1轮:

i=1,i<5成立

j=2,j<=i不成立

第2轮:

i=2,i<5成立

j=2,j<=i成立,输出'#'号

j=3,j<=i不成立

第3轮:

i=3,i<5成立

j=2,j<=i成立,输出'#'号

j=3,j<=i成立,输出'#'号

j=4,j<=i不成立

第4轮:

i=4,i<5成立

j=2,j<=i成立,输出'#'号

j=3,j<=i成立,输出'#'号

j=4,j<=i成立,输出'#'号

j=5,j<=i不成立

第5轮:

i=5,i<5不成立

所以,输出'#'号共敬瞎耐有6次

#include <string> 

#include <iostream>

using namespace std

//参考:http://blog.csdn.net/u011303443/article/details/70146384

int find(char s[],char t[])//s母串,t子串

{

    int idx = 0

    int len1 = strlen(s)

    int len2 = strlen(t)   

    char temp_str[256] 

    if( len1 < len2)

    {

        cout<<"error 1 "<<endl // 子串比母串长,返回-1

        return -1

    }

    while(1)//第一重循环

    {

        

        int index = 0

        for(index index < len2 index++)//第二重循环

        {

            temp_str[index] = s[idx+index]

        }

      则态  temp_str[index] = '\0'   // 不断获取的从 母串的 idx 位置处更新临时子串

        if(strcmp(t,temp_str)==0)break      // 若临时子串和子串一致,结束循环

            idx++                              // 改变从母串中取临时子串的位置

        if(idx>=len1) 

                {

                    idx=-1

                 孙敬源   break

                }       // 若 idx 已经超出母串长度,说明母串不包含该子串,返回-1

    }

    return idx+1    // 返回子串第一个字符在母串中的位置

}

int main(void)  

{  

    char *s1="ab"

    char *s2="dfdsfdsabcdfdsabcdd"  

    int pos = 0  

    cout<<s1<<endl<<s2<<endl

    pos = find(s2,s1)  //注意,函数调用:母串在前,子串在后

  稿余  if( pos<0 )

    {

        cout<<"not found"<<endl

    }

    else

    {

        cout<<"Found:pos="<<pos<<endl//注意,i是从0开始计数的

    }

 

    

    return 0  

}

好吧,我不得不说,CONTINUE,是轿橘结束本次小循环,继续下一次循环。你要是用RETURN

的话程序就停止了,不建议你用GOTO与闷悔C语言的结构化程序设计相违背,用两次BREAK,和相应的条件判闭罩团断,应该可以跳出。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12529460.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存