1、多轮循环深嵌套的烦恼
#include <iostream>
using namespace std;
int main()
{
int nums[] = {1,2,3,4,5};
cout << "检测开始!" << endl;
for( int i=0; i < 5; i++ )
{
for ( int ii=0; ii < 5; ii++ )
{
int sum = nums[i] + nums[ii];
if ( sum == 5 )
{
cout << "检测到总和等于 5 的两个值的两个下标是:" << i << " 和 " << ii << endl;
break; // break 并不管用,因为只是退出内循环,外循环还会继续。
}
}
}
cout << "检测结束!" << endl;
}
只是想要第一对数据,还写了break ,但是并不管用,结果却是:
检测开始!
检测到总和等于 5 的两个值的两个下标是:0 和 3
检测到总和等于 5 的两个值的两个下标是:1 和 2
检测到总和等于 5 的两个值的两个下标是:2 和 1
检测到总和等于 5 的两个值的两个下标是:3 和 0
检测结束!
2、贼好用的 goto
#include <iostream>
using namespace std;
int main()
{
int nums[] = {1,2,3,4,5};
cout << "检测开始!" << endl;
for( int i=0; i < 5; i++ )
{
for ( int ii=0; ii < 5; ii++ )
{
int sum = nums[i] + nums[ii];
if ( sum == 5 )
{
cout << "检测到总和等于 5 的两个值的两个下标是:" << i << " 和 " << ii << endl;
goto here; // 把 break 换成 goto,效果立竿见影,太好用了
}
}
}
here:
cout << "检测结束!" << endl;
}
输出结果符合预期:
检测开始!
检测到总和等于 5 的两个值的两个下标是:0 和 3
检测结束!