循环结构:满足循环条件,执行循环体,循环;不满足循环条件退出循环;
条件结构:满足if条件,执行if语句;不满足if条件跳过if
可以看到,循环结构是多个if结构的叠加。
当循环结构中套if结构时,我们将if条件与循环结构条件写成与结构,形式上会更简洁。
例如:
我们想判断两个字符串是否相等。
1)常规思路:分两种情况,两个字符串的大小是否相同;相同的话,如果有字符不等,则跳出循环。
bool func(char*mm,char*nn)
{
if(strlen(ch)==strlen(str))
{
int i = 0;
for(;ch[i]!='\0';i++) //常规思路,一个字符一个字符的比较,有不等的退出,都相等继续循环
{
if(ch[i]!=str[i])
return false;
}
return true;
}else
return false;
}
2)循环条件和if条件合并
bool func(char*ch,char*str)
{
if(strlen(ch)==strlen(str))
{
int i = 0;
for(;ch[i]==str[i]&&ch[i]!='\0';i++) //循环结构的本质就是不满足条件退出,满足条件循环
{
}//不满足循环条件,退出循环:
//ch[i]!=str[i]&&ch[i]!='\0';//两个字符串不等
//ch[i]==str[i]&&ch[i]=='\0';//两个字符串相等
//ch[i]!=str[i]&&ch[i]=='\0';//不存在这种情况
if(ch[i]==str[i]) return true;
return false;
}else
return false;//存在两种情况,strlen(ch)>strlen(str)//可以合并到上面的情况中ch[i]!=str[i]&&ch[i]!='\0';
//strlen(ch)<strlen(str)//也可以合并到上面的情况中ch[i]!=str[i]&&ch[i]=='\0';//即可能是这种情况
}
3)两个字符串不等的情况合并
bool func(char*ch,char*str)
{
if(strlen(ch)==strlen(str))
{
int i = 0;
for(;ch[i]==str[i]&&ch[i]!='\0';i++) //循环结构的本质就是不满足条件退出,满足条件循环
{
}
return(ch[i]==str[i]);
}
也可以写成如下形式
bool func(char*mm,char*nn)
{
for(int j=0;mm[j]==nn[j]&&nn[j]!='\0';j++){}
return (mm[j]=='\0'&&nn[j]=='\0');
}
总结:循环结构与条件结构判断条件的复用,充分运用了循环条件成立则不断循环,不成立则退出循环体的含义,
如上,我们表达的意思就是,如果两个字符串的每一个字符都相等,则不断循环。