例:
#include<stdio.h> void main() { int i,j,k; printf("i j k\n"); for(i=0;i<2;i++) for(j=0;j<2;j++) for(k=0;k<2;k++); printf("%d%d%d\n",i,j,k); }
問題:輸出以下圖形:
*
**
***
****
*****
******
提示:一共6行,每行的‘*’數都與行數相同。
#include<stdio.h> void main() { int n,i; for(n=1;n<=6;n++) //打印行; { printf("\n"); for(i=1;i<=n;i++) //打印‘*’; { putchar('*'); } } }
四種循環的比較:
(1)四種循環都可以用來處理同一個問題,一般可以互相代替。但一般不提倡用goto型循環。
(2)while和do-while循環,只在while后面的括號內指定循環條件,因此為了讓循環能正常結束,循環體中應包括使循環趨於結束的語句(如i++或i=i+1)。
(3)for循環可以在表達式3中包含使循環趨於結束的操作,甚至可以將循環體中的操作全部放在表達式3中。因此for語句功能最強,也最常用。
(4)用while和do-while循環時,循環變量初始化的操作應在while和do-while語句之前完成,而for語句可以在表達式1中實現循環變量的初始化。
(5)while循環、do-while循環和for循環,可以用break語句跳出循環,用continue語句結束本次循環。而對goto語句和if語句構成的循環,不能用break語句和continue語句進行控制。
題目:有1、2、3、4四個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?
程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去掉不滿足條件的排列。
#include<stdio.h> void main() { int i,j,k,n; n=0; for(i=1;i<5;i++) { for(k=1;k<5;k++) { for(j=1;j<5;j++) { if(i!=k&&j!=i&&j!=k) n++; if(i!=k&&j!=i&&j!=k) printf("%d%d%d\n",i,j,k); } } } printf("%d",n); }