关于循环和循环嵌套的问题 请教关于Thinkphp-foreach嵌套循环的问题

\u5173\u4e8efor\u5faa\u73af\u5d4c\u5957\u7684\u95ee\u9898\uff1f

main(){inti,j,k;printf("ijk\n");for(i=0;ifor(j=0;jfor(k=0;kprintf("%d%d%d\n",i,j,k);}for\u5faa\u73af\u7684\u5d4c\u5957\uff1a\u5c31\u4e0a\u9762\u7684\u4ee3\u7801\u800c\u8a00\uff0c\u901a\u4fd7\u7684\u8bb2\uff0c\u6211\u4eec\u53ef\u4ee5\u8bf4\u5957\uff0c\u5957\u4f46\u662f\u5b9e\u9645\u4e0a\u8fd9\u53e5\u53ea\u662ffor\u5faa\u73af\u7684\u5934\u90e8\uff0c\u5176\u4e3b\u4f53\u662f\u8fd9\u4e09\u53e5\u6240\u7ec4\u6210\u7684\u53e6\u4e00\u4e2afor\u5faa\u73af\u3002\u6253\u4e2a\u6bd4\u65b9\u6765\u8bb2\uff0c\u5730\u7403\u4ece\u5916\u5230\u5185\u4e0d\u662f\u5206\u597d\u51e0\u5c42\u7684\uff1ffor\u5faa\u73af\u5c31\u8ddf\u5730\u7403\u4e00\u6837\uff0c\u8fd9\u91cc\u7684\u5c31\u76f8\u5f53\u4e8e\u5730\u8868\uff0c\u662f\u5730\u5e54\uff0c\u4ee5\u6b64\u7c7b\u63a8\u3002\u4ece\u6267\u884c\u987a\u5e8f\u6765\u8bb2\uff0c\u6211\u4eec\u5148\u4e0d\u8bb2\u4e09\u5c42\u7684\uff0c\u8bb2\u4e2a\u4e24\u5c42\u7684\u597d\u4e86\u3002\u6bd4\u5982\u4e0a\u9762\u7684\u4e09\u53e5\uff1afor(j=0;jfor(k=0;kprintf("%d%d%d\n",i,j,k);\u7b2c\u53e5\uff1a\u5bf9\u4e8e\u4ece0\u52302\u7684\u6bcf\u4e00\u4e2aj\uff08\u4e5f\u5c31\u662f0\u548c1\u4e86\uff09\uff0c\u90fd\u8981\u6267\u884c\u4e00\u6b21\u6784\u6210\u7684for\u5faa\u73af\u3002\u800c\u5462\uff1f\u662f\u5bf9\u4e8e\u4ece0\u52302\u7684\u6bcf\u4e00\u4e2ak\uff08\u540c\u6837\u4e5f\u662f0\u548c1\uff09\uff0c\u90fd\u8981\u6267\u884c\u4e00\u6b21\u8fd9\u4e2a\u53e5\u5b50\u3002\u603b\u7684\u6765\u8bb2\uff0c\u8fd9\u4e2a\u53e5\u5b50\u5728\u8fd9\u91cc\u4e00\u5171\u6267\u884c\u4e862*2=4\u6b21\uff0c\u7b2c\u4e00\u6b21\u6267\u884c\u7684\u65f6\u5019j=0,k=0\uff0c\u7b2c\u4e8c\u6b21\u7684\u65f6\u5019j=0,k=1\uff0c\u7b2c\u4e09\u6b21\u7684\u65f6\u5019j=1,k=0\uff0c\u7b2c\u56db\u6b21\u7684\u65f6\u5019j=1,k=1\u3002\u53e6\u5916\uff0c\u4e5f\u6709\u4eba\u95ee\u8fc7\u5173\u4e8e\u5d4c\u5957for\u5faa\u73af\u7684\u95ee\u9898\uff0c\u8bf7\u53c2\u770b\u8fd9\u91cc\u7684\u89e3\u7b54\uff1a

\u67092\u79cd\u65b9\u6cd5\uff1a
1.\u5728\u540e\u53f0\u505a\u6587\u7ae0\uff01\uff01\uff01\u628a\u5206\u7c7b\u548c\u5546\u54c1\u7ec4\u6210\u4e00\u4e2a\u4e8c\u7ef4\u6570\u7ec4\uff0c\u6bcf\u4e2a\u5206\u7c7b\u4e0b\u9762\u6709\u5bf9\u5e94\u7684\u5546\u54c1\uff0c\u9759\u6001\u9875\u9762\u5728\u904d\u5386

{$cate['name']}

{$one['title']}


2.\u76f4\u63a5\u5728\u9759\u6001\u9875\u9762\u505a\u6587\u7ae0

{$cate['name']}

-------\u8fd9\u8fb9\u8981\u505a\u4e00\u4e2aif\u5224\u65ad\uff0c\u5224\u65ad\u5546\u54c1\u662f\u5426\u5c5e\u4e8e\u6b64\u5206\u7c7b\u7684\uff0c\u53ea\u6709\u5c5e\u4e8e\u7684\u624d\u6253\u5370\u51fa\u6765-------
{$one['title']}
--------if \u7ed3\u5c3e--------

第一个问题:if在循环体内,则每次循环都会执行,但只有符合if条件的,才会执行if语句中包含的内容。

第二个问题:外循环执行a次,内循环每当外循环执行1次就执行b次,所以一共执行a*b次,你说的没有错。

第三个问题:这里你问了很多,我一个一个回答吧。

1、用i=N-1;i>0;i--是可以的,但你要改里面所有的循环,因为这个排序算法逻辑是先找出最大的一个数和第一个数交换,再从第二个数开始找出最大的一个数和它交换,如果用i=N-1;i>0;i--,你就要改变算法,找出最小的一个数和最后一个交换,再找出最小的数和倒数第二个交换……

2、if(i!=k)是每次循环都执行的,只有发现更大的数(k值发生变化)后才会执行交换语句。

3、并不是每次都执行交换位置的,你对这个算法理解不太清楚,可能你的编程老师没有讲解清楚吧,另外这个程序也有个问题,k其实是没有用的,你把程序改成下面的就好理解多了:

int i,j,temp;
int a[N]; //一开始所有要排序的数存储在数组a里

for(i=0;i<N-1;i++) //从第一个数开始循环到最后一个数
{

for(j=i+1;j<N;j++) //对每一个数,和其后的所有数进行比较(因为前面的数通过排序已经是最大的数了,不用比较)

{

if(a[i]>a[j]) //如果发现一个数a[j]比当前数a[i]更大
{
temp=a[i];
a[i]=a[j];
a[j]=temp; //通过临时变量temp实现a[i]和a[j]的交换
}

}

}

这样你应该对这个算法更理解了吧?它是依次找出数组中第一大、第二大、……、第N大的数,来和数组的第一个、第二个、……、第N个数交换,最终完成排序。这个算法可以实现排序功能,但性能不如冒泡排序法。

嵌套的流程图?我画个给你。这里没办法帖图,你看链接吧。

http://211.157.108.18/t.gif

第一个问题;if是在for里的2为假的时候执行
应该是先执行完for(1,2,3)后再执行if语句,因为"for(1;2;3) s;"是一个循环体而"if()"在它外面,只有在for里的2为假的时候循环才结束接下来按顺序执行,for里的2为真时继续执行循环.如果要每次循环时执行则应改为:
for(1;2;3)
{
s;
if()
}
你可以在调试时具体的看看它是怎么执行的

"这种类型,外层for先执行一次,然后等内层循环b次以后,再执行第i+1次外层吗?"回答是肯定的

/*这里他说排序开始,我知道这里为什么要这样给条件呢?我用i=N-1;i>0;i--不行吗?*/
可以但后面的应该改改,否则就成了 从大到小排列了

/*这里的if是什么什么时候执行?是j<N为假的时候执行,还是每次循环完都执行?*/
如前所述是j<N为假的时候执行

for里面的条件是怎么确定的? 看情况而定

c语言中的for循环语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句.
for(表达式 1;表达式 2;表达式 3)语句
它的执行过程如下:
(1)先求表达式 1.
(2)求表达式2,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后执行下面第三步 做若为假(值为0),则结束循环,转到第5步.
(3)求解表达式3
(4)转回上面第(2)步骤继续执行;
(5)结束循环,执行for语句下面的一个语句;
for(循环变量赋初值;循环条件;循环变量增值)语句

for(i=1;i<=100;i++)sum=sum+i;
它的执行相当于
i=1;
while(i<=100){
sum=sum+i;
i++;
}
显然,用for语句更简单、方便。
说明:
(1)for语句的一般形式中的"表达式1"可以省略,此时应在for语句之前给循环变量赋初值.注意省略表达式1时,其后的分号不能省略.如for(;i<=100;i++){....};
(2)如果表达式2省略 即不判断循环条件,循环无终止地循环下去,也就是认为表达式2始终为真.
例如:for(i=1;;i++){.....};
相当于

i=1;
while(1)
{sum=sum+1;
i++;
}
(3)表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束.如:
for(i=1;i<=100;)
{sum=sum+1;
i++;
}
这个例子的循环增量没有放在表达式三的位置 而是作为循环体的一部分 其效果是一样的.
(4)可以省略表达式1和表达式3,只有表达式2 即只给循环条件.

for(;i<=100;)
{
sum=sum+i;
i++;
}
这个相当于
whlie(i<=100)
{
sum=sum+i;
i++;
}
(5)三个表达式都可以省略,如:
for(;;)语句
相当于
while(1)语句
即不设初值 不判断条件(认为表达式2为真值)循环变量不增值,无终止的执行循环体.
(6)表达式1也可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式.如:

for(sum=0;i<=100;i++)
{
sum=sum+i;
}
for(sum=0,i=0;i<=100;i++)
{
sum=sum+i;
}

main(){inti,j,k;printf("ijk\n");for(i=0;ifor(j=0;jfor(k=0;kprintf("%d%d%d\n",i,j,k);}for循环的嵌套:就上面的代码而言,通俗的讲,我们可以说套,套但是实际上这句只是for循环的头部,其主体是这三句所组成的另一个for循环。打个比方来讲,地球从外到内不是分好几层的?for循环就跟地球一样,这里的就相当于地表,是地幔,以此类推。从执行顺序来讲,我们先不讲三层的,讲个两层的好了。比如上面的三句:for(j=0;jfor(k=0;kprintf("%d%d%d\n",i,j,k);第句:对于从0到2的每一个j(也就是0和1了),都要执行一次构成的for循环。而呢?是对于从0到2的每一个k(同样也是0和1),都要执行一次这个句子。总的来讲,这个句子在这里一共执行了2*2=4次,第一次执行的时候j=0,k=0,第二次的时候j=0,k=1,第三次的时候j=1,k=0,第四次的时候j=1,k=1。另外,也有人问过关于嵌套for循环的问题,请参看这里的解答:

跳出后的都不执行了。。

  • 鏈変袱涓寰幆,浠栦滑鏄宓屽鍏崇郴,鍦ㄥ唴寰幆涓娇鐢╞reak灏嗙粓姝㈠摢涓涓惊鐜?
    绛旓細鍐呭惊鐜痓reak鍙烦鍑哄寘鍚畠閭e澶ф嫭鍙风殑寰幆銆傚鏋滃灞傝繕鏈夊惊鐜殑璇濅篃灏辨槸寰幆宓屽鐨璇濋偅涔堝彧璺冲嚭鍐呭惊鐜乥reak 鍦ㄤ竴浜涜绠楁満缂栫▼璇█涓槸淇濈暀瀛楋紝鍏朵綔鐢ㄥぇ澶氭儏鍐典笅鏄粓姝㈡墍鍦ㄥ眰鐨勫惊鐜傚湪 C璇█ 鐨 switch锛堝紑鍏宠鍙ワ級涓紝break 璇彞杩樺彲鐢ㄦ潵鍦ㄦ墽琛屽畬涓涓 case锛堝垎鏀級鍚庣珛鍗宠烦鍑哄綋鍓 switch 缁撴瀯銆傚湪鏌愪簺...
  • VB For Next 寰幆宓屽姹傚闂
    绛旓細杩欎釜涓夊眰宓屽寰幆锛屽垎鍒互i,j,k涓烘帶鍒跺彉閲忥紝i,k鐨勫惊鐜粓姝㈠奸兘鏄3锛屽洜姝わ紝鏈鍚巔rint鍑烘潵鐨勫煎氨鍙樹负4锛屽綋鍙樹负4鏃讹紝灏变笉鍐嶈繘鍏ュ惊鐜簡銆俲寰幆鐨缁堟鍊兼槸i,鑰屽湪寰幆浣撲腑i鐨勬渶鍚庡彇鍊兼槸3锛屽嵆j寰幆鐨勭粓姝㈠间篃鏄3锛屾渶鍚巔rint鍑烘潵鐨勫氨涔熸槸4浜嗐俿i,sj,sk锛岃繖涓変釜鍙橀噺鍒嗗埆鍦ㄤ笁灞傚惊鐜腑琚噸鏂拌祴鍊笺傜涓...
  • vb for寰幆宓屽鐨勯棶棰
    绛旓細X鐨勬渶缁堝兼槸15 i浠1鍒4锛屾瘡娆寰幆閮介噸鏂拌祴鍊糥=4锛屾墍浠ョ洿鎺ョ湅i=4鍗冲彲锛沯浠1鍒3锛屾瘡娆″惊鐜兘閲嶆柊璧嬪糥=3锛屼細瑕嗙洊鍓嶉潰鐨刋=4锛屾墍浠鐨勫煎湪姝ゆ棤鐢紝鍙洿鎺ョ湅j=3鍗冲彲锛沰浠1鍒2锛屽惊鐜紑濮嬪墠x=3锛屽綋k=1鏃讹紝x=x+6=3+6=9;褰搆=2鏃讹紝x=x+6=9+6=15;鎵浠鐨勬渶缁堝兼槸15銆
  • java涓殑for寰幆宓屽璇彞鎬庝箞鎵ц鍟 姣斿宓屽4涓 ?
    绛旓細for(int j=0;j<11;j++) 绗簩灞 for(int k=0;k<12;k++) 绗笁灞 for(int m=0;m<13;m++) 绗洓灞 a++;鎵ц璇彞灏卞彧鏈変竴鍙++锛岀劧鍚庢垜浠潵鐪嬫墽琛岄『搴忥細鍏堜粠涓婂埌涓嬫墽琛宖or寰幆锛屽厛鎵ц绗竴灞傦紝i=0婊¤冻鏉′欢锛岃繘鍘绘墽琛屼粬鐨勬柟娉曚綋锛屼粬鐨勬柟娉曚綋灏辨槸绗簩灞傦紱绗簩灞備竴鐪嬩篃婊¤冻锛...
  • java涓鍏充簬for宓屽寰幆闂,a,b鍒氬垰寮濮嬮兘绛変簬1,鎬庝箞鑳芥墽琛屽惊鐜憿,缁撴灉...
    绛旓細鐢辩▼搴忓唴寰幆鍙煡锛屽彧鏈夊綋b<a鏃讹紝鎵嶄細鎵ц杈撳嚭璇彞 a=1鏃,b<a鑲畾涓嶆弧瓒筹紝璺冲嚭鍐呭惊鐜紝鍗充笉杈撳嚭a a=2鏃讹紝鍐呭惊鐜浉褰撲簬for(b=1;b<2;b++),杩欐椂鍐呭惊鐜潯浠惰兘婊¤冻涓娆★紝鍗宠緭鍑轰竴娆 a=3鏃讹紝鍐呭惊鐜浉褰撲簬for(b=1;b<3;b++),杩欐椂鍐呭惊鐜潯浠惰兘婊¤冻浜屾锛屽嵆杈撳嚭浜屾a a=4鏃讹紝鍐呭惊鐜浉褰...
  • 鍏充簬access涓璮or...next寰幆宓屽鐨勯棶棰姹傝В
    绛旓細杩欐槸涓夐噸宓屽for寰幆缁煎悎璁$畻鎵閫犳垚鐨勭粨鏋溿傛渶鍐呭眰寰幆锛團or k=1 to 2)杩愯涓ゆ锛屾瘡娆鍔3 鍏卞鍔犱簡2*3=6;绗簩灞傚惊鐜紙for j=1 to 3)浣垮緱鏈鍐呭眰寰幆杩愯3娆★紝x澧炲姞浜6*3=18 锛屽姞涓婂垵濮嬪紉=3 杩欐牱姣忔绗簩灞傚惊鐜粨鏉熸椂鍙橀噺x鐨勫兼槸21锛涙渶澶栧眰寰幆锛團or i = 1 To 4锛夎繍琛4娆★紝姣忔...
  • C璇█寰幆宓屽闂
    绛旓細鍏堣浣犻偅涓猧++鐨勯棶棰鍚 缁撴灉搴旇鏄痠=2锛宩=4 鍥犱负锛歩=1 鍦╥++杩欐i 杩樻槸1 鎵ц鍒颁笅涓姝ユ椂锛宨鍙樻垚2 锛屾鏃秊=i+i 鎵浠=4 杩欑闂浠ュ悗涓嶈闂簡锛屼功涓婇兘鏈夛紝璇寸殑寰堟竻妤 涓嶇鏄粈涔寰幆閮芥槸涓姝ヤ竴姝ョ殑鎵ц锛屾瘮濡備綘鐨勮繖閬撻 澶栧眰寰幆 鍏堟墽琛岋紝i=0 鍐嶆墽琛屽唴閮ㄥ惊鐜痡=0 褰撳唴閮ㄥ惊鐜痡...
  • c璇█涓,for寰幆閲宓屽浜唖witch寰幆,switch寰幆閲屾湁涓や釜缁撴灉,涓涓猙rea...
    绛旓細reak 鏄烦鍑寰幆浣 鎵ц涓嬮潰鐨勮鍙ョ殑鎰忔 鍦ㄤ綘杩欎釜棰樼洰涓槸 switch 璇彞宓屽鍦╢or璇彞褰撲腑锛佸洜涓篵reak 鍦ㄥ寘鍚湪switch璇彞褰撲腑鐨勶紒鎵浠reak 璺冲嚭鐨勬槸 switch鐨勫鍒嗘敮缁撴瀯鑰屼笉鏄烦鍑篺or 璇彞 鎵浠or璇彞鏄鎵ц瀹屾瘯鐨勶紒浣犲簲璇ュ幓缈荤炕宓屽浣跨敤寰幆璇彞鏂归潰鐨勪笢瑗裤
  • 鍏充簬C璇█FOR寰幆宓屽鐨涓鐐圭枒闂,姹傛寚鐐,璋㈣阿銆
    绛旓細杩欎釜闂寰堝ソ鐞嗚В鍟婏紒浣犱富瑕佹槸琚灞寰幆鎼炴檿浜嗭紝浣犲彲浠ュ厛浠庣畝鍗曠殑鐞嗚В锛岀悊瑙e畬浜嗗啀娣卞叆锛乫or寰幆鏄繖鏍峰伐浣滅殑锛歠or锛堣鍙1锛涜鍙2锛涜鍙3锛夛紱鍏堝垵濮嬪寲锛堣鍙1锛夛細鍙仛涓娆★紝浠ュ悗鍐嶄篃涓嶅仛浜嗭紱鏉′欢鍒ゆ柇锛堣鍙2锛夛細涓鏃︽潯浠舵垚绔嬪氨鍋氬惊鐜噷鐨勮鍙ワ紝鐩村埌寰幆閲岀殑璇彞鍏ㄥ仛瀹屽啀鍥炴潵鍒ゆ柇锛涗竴鏃︽潯浠跺け璐ュ氨璺冲嚭...
  • 濡傛灉涓涓猣or寰幆琚宓屽鍦ㄥ彟涓涓腑,閭d袱涓惊鐜腑鐨勫惊鐜彉閲忓繀椤荤浉鍚屽悧...
    绛旓細搴旇鏄瘡涓猣or寰幆閮芥湁鑷繁鐨勫彉閲忥紝宓屽鐨for寰幆鍙橀噺鍙互涓嶅悓銆
  • 扩展阅读:循环障碍的七个表现 ... 三层循环嵌套流程图 ... 循环贷有多可怕 ... 循环嵌套最简单的例子 ... 为什么不建议在for循环中使用 ... python循环嵌套if问题 ... 为什么不建议用循环泵 ... 循环嵌套注意事项 ... 循环嵌套要注意的几个问题 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网