读书人

一直未解决 求高手解答 。

发布时间: 2012-03-06 20:47:55 作者: rapoo

一直未解决 求高手解答,在线等 。。。。。。。。。。。。。。。。。。。。。
#include <iostream>
using namespace std;
int main()
{int i,j;
for(i=0;i <=5;i++)
{for(j=5;j <=8;j++)
while(i==j)
break;
cout < <i < < " " < <j < < " " < < "sdfjkasl " < <endl;}

return 0;
}


#include <iostream>
using namespace std;
int main()
{int i,j;
for(i=0;i <=5;i++)
for(j=5;j <=8;j++)
while(i==j)
break;
cout < <i < < " " < <j < < " " < < "sdfjkasl " < <endl;

return 0;
}


这两个程序结果是什么,为什么?请高手解答,在线等。。。。




[解决办法]
0 9 sdfjkasl
1 9 sdfjkasl
2 9 sdfjkasl
3 9 sdfjkasl
4 9 sdfjkasl
5 9 sdfjkasl

很难么?
你看清第二个循环的作用域在哪儿
[解决办法]
6 9 sdfjkasl

这第二个的
看清第二个循环对哪句有效,break退出第二层循环,i又加1,不足条件退出
[解决办法]
第一个
0 9 sdfjkasl
1 9 sdfjkasl
2 9 sdfjkasl
3 9 sdfjkasl
4 9 sdfjkasl
5 9 sdfjkasl
第二个
6 9 sdfjkasl

这个没有为什么吧,程序就是这么写的,流程就是这样的。
[解决办法]
如果你不明白程序的流程,可以通过加括号的方式来解决。
第一个程序:
#include <iostream>
using namespace std;
int main()
{
int i,j;

for(i=0;i <=5;i++)
{
for(j=5;j <=8;j++)
{
while(i==j)
{
break;
}
}
cout < <i < < " " < <j < < " " < < "sdfjkasl " < <endl;
}

return 0;
}

第二个程序:
#include <iostream>
using namespace std;
int main()
{
int i,j;

for(i=0;i <=5;i++)
{
for(j=5;j <=8;j++)
{
while(i==j)
{
break;
}
}
}
cout < <i < < " " < <j < < " " < < "sdfjkasl " < <endl;

return 0;
}
现在流程清楚了吗?

[解决办法]
两个break只会中出while循环,而不会影响到for循环。
[解决办法]
break只会跳出离它最近的一层循环,在两个程序里,都是while循环。实际上,两个程序中的while循环没有起到任何作用,去掉两个程序中的while循环,程序的结果不会有任何变化。
不过,如果把while循环换成一个if判断语句,那么执行的结果就会完全不同

读书人网 >C++

热点推荐