• Java基础五


    i1、While循环

    2、do ... While循环

    3、For循环

    一、While

    /*
    while循环

    语句格式:


    while(boolean表达式){
      语句块;
      }

      执行顺序:
        先判断boolean表达式的值,如果是true。就执行语句块。
        再判断boolean表达式的值,如果是true。就执行语句块。
        再判断boolean表达式的值,如果是true。就执行语句块。
        ……
        直到boolean表达式为false的时候,就结束了。

    */

    练习题系列:

      打印五次Hello World

      打印输出1~10

      求1~10的阶乘

      求100以内偶数的和

    二、do ... While

    /*
    do-while的格式:

    do{
      语句块;
    }while(boolean表达式);

      执行顺序:
      执行语句块,然后判断boolean表达式,如果为true。
      继续执行语句块,然后判断boolean表达式,如果为true。
      继续执行语句块,然后判断boolean表达式,如果为true。
      ……
      继续执行语句块,然后判断boolean表达式,如果为false。停止。
    */

      练习题:

      用do-while打印三次helloworld

      用do...while打印100以内所有的奇数

      打印100以内能被3整除,但是不能被5整除的数

     

    //总结:

      //while和do-while的区别:
      //while先执行条件,然后执行循环体
      //do-while先执行循环体,后判断条件。

      //当第一次就不满足循环条件的情况下,while一次都不能执行,而do-while会执行一次。


    三、For循环

    /*
    for循环
      格式:
      for(循环变量初始值设定;循环条件boolean值;每次循环之后执行的语句){
        循环体;
      }

    执行过程:
      首先计算初始值设定。
      然后计算boolean值,如果为true,就执行循环体一次,然后执行“每次循环之后执行的语句”。
      然后计算boolean值,如果为true,就执行循环体一次,然后执行“每次循环之后执行的语句”。
      然后计算boolean值,如果为true,就执行循环体一次,然后执行“每次循环之后执行的语句”。
      ……
      然后计算boolean值,如果为false,就停下来了。
    */

      练习题:

      打印三个Hello World:

    重重瞅瞅这个题的思路

    首先打印出符合条件的内容,然后加入count计数,满6就换行:下面时复杂方法

      接着提高效率:

      一个*****题:

    答案:

    首先记得i++一定是正数吗?

    这里用到了   >>>:无符号右移:无论最高位是0还是1,左边都补齐0.里面的思考

     i++算到最后为

    01111111   11111111   11111111   11111111   为正数,补码和源码一样

    如果再加一得:

    11111111    11111111   11111111   11111111   为负数

    说真的这个题真没意思!!!我来验证一下:

    首先由上面的正数加一可以变成负数可得:2147483647+1=-2147483648

    由此可知:2147483647+k+1=-(2147483648-k)

    所以题目中是i++,计算的是3*i;也就是负数中最大三倍的(2147483648-k)。

    然后再一个一个的加一;

    直到:如下:

    即:三倍的-1431655763,int强制转换是等于7的!!!!!!!!

     四、For For循环,即嵌套循环

      首先用  *    输入一个矩阵:

      然后输入由  *  组成的三角形:

      99乘法表:

    重点来,打印菱形:

    这个需要加点数学知识,如图:

    这里以4为例:

    要打印菱形,就是从上一个题目中,打印矩形星星中切除一部分星星。而如何切除呢?

    就是从上图坐标中范围取值切除,每个星星都会对应一个横竖坐标值,即X、Y;也就是X、Y的不同取值范围中是显示空格还是显示星星的问题。

    由上面分析可以得到for循环中的条件语句,代码就可以敲了。

    这个是边长为4的菱形,输出“*”(星星)还是输出“ ”(空格)根据范围的变化而变化。

     

    上面那个逻辑性不好,不算打印正确,下面才是真正的抠图。

    其实都可以。

      空心菱形:

      break 和continue

      标签:任意定义一个标识符在一个for循环前【loop:for(){}】,在break等后面加上标签【break loop;】,即表示指定这个位置的for循环break.

       For循环练习题:

     //练习一:最大公约数与最小公倍数。

    首先求最大公约数有两种方法:

    1、更相减损术:

      以8和10 为例:大的减小的,直到两数相等

        eg:10-8=2      8-2=6    6-2=4    4-2=2     2==2   于是最大公约数就是2.

      最小公倍数就是两书相乘后除以最大公约数。

      a,b,c,d;初始这三个数,a,b代表要计算的,c代表中间转换需求值,d最重要,一开始就要用d表示出两数的乘积!!!!循环后a,b都会发生变化,如下程序:

    2、辗转相除法

    实例:以8 和 10 为例:

    10 / 8 = 1 .....2           8 / 2 = 4 .......0       前面中得到0的那一次,除数就是最大公约数。

     

    //练习二:水仙花数

    //练习三:百钱百鸡问题

     

    优化:

     

  • 相关阅读:
    【转】Visual Studio 2008中使用科学计算库GSL
    【转】[Python Tip]如何在Windows下方便地进入命令行运行程序
    【转】URL Encoding (URL转义字符)
    RDLC报表,纯文字内容,动态数据源 解决方案
    C# 数值计算
    标准库List使用注意
    VS2008 运行出现 “无法启动该程序 计算机中丢失 MSVCR90D.dll”
    数据结构在游戏中的简单应用(转)
    SQL SERVER 2005 四种排序函数
    2010.11.30
  • 原文地址:https://www.cnblogs.com/AlbertY/p/9307328.html
Copyright © 2020-2023  润新知