c++高手来看看这究竟是怎么一回事?

[复制链接]
查看11 | 回复4 | 2012-3-25 14:10:11 | 显示全部楼层 |阅读模式
为什么你会觉得一定是在k的循环体内达到(i+j+k)%255==0这个条件?明明是在i 的循环体内、j的循环体外达到的啊//try this:#include using namespace std;int main(){int i=1,j=0,k=0;
for(i=1;i<100;i++){for(j=0;j<100;j++){
for(k=0;k<100;k++){if ((i+j+k)%255==0){break;}
}if ((i+j+k)%255==0){break;...
回复

使用道具 举报

千问 | 2012-3-25 14:10:11 | 显示全部楼层
你的 break用错了,应该改成 continue;是的如果你最内部的循环使用break没什么问题,但是如果你外层的循环都使用break那么。你只有内层的循环有输出。break只跳出一层循环而不是所有的循环。你没有输出时因为:最内层的循环条件,它条件无法成立。最先成立的是最外层的循环。当他成立的时候他就break了最外层循环。所以最内层的循环无法成...
回复

使用道具 举报

千问 | 2012-3-25 14:10:11 | 显示全部楼层
加上些调试,你就明白了,如:
if ((i+j+k)%255==0){
cout <<"kkk"<< k <<" " << j << " " << i << " " << i+j+k <<endl ;
break;
}
} ...
回复

使用道具 举报

千问 | 2012-3-25 14:10:11 | 显示全部楼层
同学,你没有彻底理解 break的含义。break,表示直接跳出当前循环体,你在最外层循环和次外层循环都指示一旦满足i+j+k%==0便直接跳出该层循环而没有输出任何东西。你在最内层跳出一次没有任何关系,但是你跳出次外层或者最外层循环一次,都会有大量的情况没计算过。实际上你这个程序加不加break都不会影响,只要你在满足条件的时候都输出即可。另外,最后一...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行