例:
#include<stdio.h> void main() { int i,j,k; printf("i j k "); for(i=0;i<2;i++) for(j=0;j<2;j++) for(k=0;k<2;k++); printf("%d%d%d ",i,j,k); }
问题:输出以下图形:
*
**
***
****
*****
******
提示:一共6行,每行的‘*’数都与行数相同。
#include<stdio.h> void main() { int n,i; for(n=1;n<=6;n++) //打印行; { printf(" "); 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 ",i,j,k); } } } printf("%d",n); }