第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,和相应的条件判闭罩团断,应该可以跳出。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)