for循环嵌套的理解和应用

for循环嵌套的理解和应用

目录

首先我们先温习一遍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();

}

相关推荐

淘宝账户体检中心在哪?怎么查询?
best365从哪能进去

淘宝账户体检中心在哪?怎么查询?

📅 07-14 👁️ 2987
【骥,驥】的甲骨文金文篆文字形演变含义日期:2023-03-19 来源:甲骨密码评论:0点击:
G-DRAGON粉丝集体抗议:Galaxy公司管理不善引发信任危机?
365bet手机版客户端

G-DRAGON粉丝集体抗议:Galaxy公司管理不善引发信任危机?

📅 09-13 👁️ 8128