目录
首先我们先温习一遍for循环是干什么的?
for循环的语法规则
for循环的执行顺序
案例
我们要从题干中思考几个问题
for循环嵌套
含义:就是原本一个for循环,不满足题干要求再添加一个或多个for循环,满足解题需要。
语法规则:
执行流程
常见事项
2 for循环嵌套的应用
1打印 平行四边形
2 、随机产生一个 1-100 之间的数字,然后让玩家不断猜测,如果猜大,提示过大,如果猜小,提示过小,如果猜中则程序停止
3 、每只母鸡3元,每只公鸡4元,每只小鸡0.5元,如果花费100元买100只鸡,有多少种方法
4,输出一个四位数的翻转数,比如 5832的翻转数是2385
5, 打印九九乘法表
6,编程求:1!+2!+3!+…10!
7、猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个 以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
8,打印菱形
首先我们先温习一遍for循环是干什么的?
for循环:个人理解就是假设无数个问题,需要有求解,
但我们如果一个个求的话,既浪费时间又增加很多似乎重复的代码。所以就想可不可以轻松点,把这些问题中共同的部分提问出来,同时增加可以控制这些问题的条件,这样我们就可以方便我们解题。这就是为什么要用for循环---总之就是提高我们的效率
for循环的语法规则
for(变量初始化;控制循环的条件;循环变化的可控范围)
{
循环体;
}
for循环的执行顺序
变量初始化 1
控制循环条件 2
循环变化的可控范围 3
循环体 4
顺序:
1----2----4----3---2----4----直到不再满足控制循环条件2
案例
问题:
输出1到100个数
假设我们不用循环,那就要求我们输出100条输出语句,没有效率。
如果用for循环的话
我们要从题干中思考几个问题
1初始条件是什么,意思是从那个数开始输出这里是从1开始对应for循环的 --- 1
2 什么时候结束意思是到100就结束了 对应for循环的----2
3 每个数之间的关系是什么,从题干中知道 每次都加1对应for循环的---3
4 在题目中寻找相同点。从题干中知道输出的都是数字,假如我用变量存这些数字,是不是就可以只输入一次。对应for循环的---4
所以代码如下:
for(int i=1;i<=100;i++){
System.out.println(i);
}
for循环嵌套
含义:就是原本一个for循环,不满足题干要求再添加一个或多个for循环,满足解题需要。
注意:这里我常说的两个for循环。
语法规则:
for(变量初始化--1;控制循环的条件---2;循环变化的可控范围---3)
{
for(变量初始化---4;控制循环的条件---5;循环变化的可控范围---6)
{
循环体----7;
}
}
执行流程
1---2--4--5--7--6---直到内层循环控制循环条件--5结束
3---2--4--5--7--6---直到内层循环控制循环条件--5结束
3---2--4--5--7--6---直到外层循环控制循环条件--2结束
最终,整个循环结束
常见事项
1.内层循环受外层循环约束,我常常内存循环当中外层循环的循环语句,当外层循环的控制循环条件不满足就不执行内层循环。
2外层循环,循环一次,而内层循环,就会一直循环,直到循环结束
3 如果在循环过程中外层循环的控制循环的条件在内层循环,循环过程中被满足,并不会立即结束,而是要等内层循环全部循环结束在思考外层循环是否满足条件
2 for循环嵌套的应用
1打印 平行四边形
1打印 平行四边形
****
****
****
****
问题分析:如果我们要打印平行四边形,一个for循环是远远不够的
所以循环的嵌套
代码如下
for (int i = 0; i <4 ; i++) {
//外层循环表示行数,这里存在4行;内层循环则表示每一层的空格和*表示
for (int j = 0; j
System.out.print(" ");
}
for (int k = 0; k < 4; k++) {
System.out.print("*");
}
System.out.println();
//表示外层循环,每循环一次都要换行
}
2 、随机产生一个 1-100 之间的数字,然后让玩家不断猜测,如果猜大,提示过大,如果猜小,提示过小,如果猜中则程序停止
/*;
随机产生一个 1-100 之间的数字,然后让玩家不断猜测,如果猜大,提示过大,如果猜小,提示过小,如果猜中则程序停止
*/
代码如下
Scanner s=new Scanner(System.in);
int number=s.nextInt();
Random r=new Random();
int gussNumber=r.nextInt(100)+1;
int cnt=0;
while (number !=gussNumber){
if (gussNumber>number){
System.out.println(gussNumber+"提示过大!,请重新输入");
}
else {
System.out.println(gussNumber+"提示过小!,请重新输入");
}
cnt++;
if (cnt%20==0){
System.out.println("请重新输入number");
number=s.nextInt();
}
gussNumber=r.nextInt(100)+1;
}
if (number==gussNumber&&cnt==0){
System.out.println("恭喜你,第一次就猜中了!");
}
else if (number==gussNumber&&cnt!=0) {
System.out.println("恭喜你,第"+cnt+"次就猜中了");
}
3 、每只母鸡3元,每只公鸡4元,每只小鸡0.5元,如果花费100元买100只鸡,有多少种方法
每只母鸡3元,每只公鸡4元,每只小鸡0.5元,如果花费100元买100只鸡,有多少种方法
问题分析:
母鸡数+公鸡数+小鸡数=100
母鸡数*3+公鸡数*4+小鸡数*0.5=100
*/
代码如下
int cnt=0;
for (int i = 0; i <=33 ; i++) {
for (int j = 0; j <=25 ; j++) {
for (int k = 0; k <=200 ; k++) {
if (i+j+k==100&&3*i+4*j+0.5*k==100){
System.out.print(i +" "+j+" "+k);
System.out.println();
cnt++;
}
}
}
}
System.out.println(cnt);
4,输出一个四位数的翻转数,比如 5832的翻转数是2385
/*
,输出一个四位数的翻转数,比如 5832的翻转数是2385
*/
代码如下
Scanner s=new Scanner(System.in);
int number=s.nextInt();
int cnt=0;
int arr[]=new int[100];
while (number>0){
int littleNumber=number%10;
arr[cnt]=littleNumber;
cnt++;
number=number/10;
}
for (int i = 0; i System.out.print(arr[i ]); } 5, 打印九九乘法表 /* 打印九九乘法表 我们在做题目时,一般遵循两个原则 1 先死后活 2 化繁为简 在这个题目中,我们先看一个算式 如何表达这叫化繁为简 再看算式中左右两个数,与行数的关系。这叫先死后活 */ 代码如下 for (int i = 1; i <=9 ; i++) { //外层循环表示九层 for (int j = 1; j <=i ; j++) { // 内层循环表示每一层中的算式 System.out.print(i+"*"+j+"="+i *j +" "); } System.out.println(); } 6,编程求:1!+2!+3!+…10! /* 编程求:1!+2!+3!+…10!=4037913 */ 代码如下 int number=1,sum=0; for (int i = 1; i <=10 ; i++) { number=number*i; sum+=number; } System.out.println(sum); 7、猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个 以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 代码如下 int first=1,i=9; int sum=0; while (i>=1){ first=(first+1)*2; i--; } System.out.println(first); } 8,打印菱形 /* 打印菱形 * *** ***** ******* ***** *** * */ 代码如下 for (int i = 1; i <=4 ; i++) { for (int j = 1; j <=4-i ; j++) { System.out.print(" "); } for (int k =1 ; k <=2*i-1 ; k++) { System.out.print("*"); } System.out.println (); } for (int i = 1; i <=3 ; i++) { for (int j = 1; j <=i ; j++) { System.out.print(" "); } for (int k = 1; k <=7-2*i ; k++) { System.out.print("*"); } System.out.println(); }