第5单元 循环结构
5.1.1 do{}while结构
do{
循环代码
}while(条件表达式);
*注意:*
1.while 先判断条件 条件为真 才执行循环
2.do{}while 先执行一次循环 再判断条件
3.无论如何 do{}while 都会先执行一次循环(输出一条数据)
4.循环结构中条件不能直接写false
5.1.2 for结构
for(表达式1;表达式2;表达式3){
循环代码
}
*注意:*
\1. 表达式2可以为空 但会陷入死循环
\2. 三个表达式都可以不写,但需要两个分号
5.1.3 嵌套的for循环
循环是可以嵌套的,包括while和do-while循环
1.
for (int i = 1; i <5 ; i++) { for (int j = 1; j <6 ; j++) { System.out.print("*"); } System.out.println(); }
2.
for (int i = 1; i < 5; i++) { for (int j = 1; j <6-i ; j++) { System.out.print("*"); } System.out.println(); }
5.
for (int i = 1; i < 5; i++) { for (int j = 1; j <=i ; j++) { System.out.print(i); } System.out.println(); }
4.
for (int i = 1; i < 5; i++) { for (int j = 4; j >i-1; j--) { System.out.print(j); } System.out.println(); }
6.
for (int i = 0; i < 5; i++) { for (int j = 0; j <i; j++) { System.out.print(" "); } for (int j = 1; j <5-i ; j++) { System.out.print("* "); } System.out.println(); }
5.1.4 使用两个变量控制循环
案例:输入两个数,查找两个数的中间数
for(int i=0, j=10; i<j; i++,j--){
//输出i和j的值
}
课后作业:
1:计算1-100的和 int sum = 0; for (int i = 0; i <=100 ; i++) { sum = sum +i; } System.out.println(sum); 2.计算10的阶乘:1*2*3*4*5*6*7*8*9*10 int fac =1; for (int i = 1; i <=10 ; i++) { fac = fac*i; } System.out.println(fac); 3. 打印1-100之间的偶数,每行打印5个数 for (int i = 1; i < 100; i++) { if (i % 2 == 0 ) { System.out.print(i+" "); if(i%5==0){ System.out.println(); } } } 4.计算1-100之间,能被3整除的数之和。 int sum =0; for (int i = 0; i <100 ; i++) { if(i%3==0){ sum+=i; } } System.out.println(sum) for (int i = 100; i <1000 ; i++) { if((i%10)*(i%10)*(i%10)+(i%100/10)*(i%100/10)*(i%100/10)+(i/100)*(i/100)*(i/100)==i){ System.out.println(i); } } 6/* 九九乘法表 for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(i+"*"+j+"="+(i*j)+" "); } System.out.println(); }*/ for (int i = 100; i <1000 ; i++) { 7、查找100-1000之间的水仙花数(asphodel)并打印输出 (****) 三位数 = 个位数字的立方 + 十位数字的立方 + 百位数字的立方 比如:153 = 1 + 125 + 27 if((i%10)*(i%10)*(i%10)+(i%100/10)*(i%100/10)*(i%100/10)+(i/100)*(i/100)*(i/100)==i){ System.out.println(i); } for (int i =1 ; i <=5 ; i++) { for (int j =1; j<=i ; j++) { System.out.print("*"); } System.out.println(); } for (int i =1 ; i <=5 ; i++) { for (int j =1; j<=6-i ; j++) { System.out.print("*"); } System.out.println(); } for (int i =0 ; i <=5 ; i++) { for (int j =1; j<=5-i ; j++) { System.out.print("*"); } System.out.println(); } 8、判断一个数是否是质数(素数)。//只能被1和本身整除的数 /*for (int i = 2; i <=100 ; i++) { boolean b = true; for (int j = 2; j <i ; j++) { if (i%j==0){ b =false; break; } } if (b ==true){ System.out.println(i); } }*/ 9. //打印输出兔子数列(小于100) int a=1; int b=1; int z=0; for (int i = 0; i < 15; i++) { System.out.print(a+" "); z=a+b; a=b; b=z; if (a>100){ break; } }
2.百钱买百鸡 公鸡5文一只 母鸡3文一只 小鸡1文五只 用100文钱买100只鸡 输出所有购买方案 /* for (int i = 1; i <20 ; i++) {// 5*x+3*y+(100-x-y)/5=100 for (int j = 1; j <33 ; j++) { if ((i*5+j*3+(100-i-j)/5==100)&(100-i-j)%5==0){ System.out.println(i+","+j+","+(100-i-j)); }*/