目录

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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐