Java小白自学9:循环结构练习题(二)

目录

13:使用Java实现输出如下图形。

14:实现双色球的彩票功能。规则:从36个红球中随机选择不重复的6个数,从15个篮球中随机选择1个组成一注彩票。可以选择买多注。

15:输出1-100之间的不能被5整除的数,每5个一行。

16:输出斐波那契数列数列的前20项

17:输出一个整数的二进制数、八进制数、十六进制数。

18:随机产生一个字母,如果是大写字母则输出“yes”,否则输出“no”

19:随机产生一个字符,判断:如果为大写字母则输出“大写字母”;如果为小写字母则输出“小写字母”;否则怎输出“其他字符”;

20:求100到1000之间的所有能被5和6整除的整数,每行显示5个

21:求和:1/3+3/5+5/7+7/9+………..+97/99

22:输出100以内的所有素数,每行显示5个;并求和。

23:山上有一口缸可以装50升水,现在有15升水。老和尚叫小和尚下山挑水,每次可以挑5升。问:小和尚要挑几次水才可以把水缸挑满?通过编程解决这个问题。

提示:

(1) 用整型变量water表示水缸里的水“int water = 15;”。

(2) 用整型变量l表示小和尚下山挑水的次数“int l = 0;”。

(3) 分析循环条件(水少于50升),循环操作(水增加5升,挑水次数增加1)。

(4) 套用while循环(或do-while循环)写出代码。

24:李白无事街上走,提壶去买酒。遇店加一倍,见花喝一斗,五遇花和店,喝光壶中酒,试问李白壶中原有多少斗酒?(使用for循环结构编程实现)

提示:采用逆向思维分析问题。

25:开发一个标题为“FlipFlop”的游戏应用程序。它从1计数到100,遇到3的倍数就替换为单词“Flip”,5的倍数就替换为单词“Flop”,既为3的倍数又为5的倍数则替换为单词“FlipFlop”。

26:生成13位条形码

Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。

例如:690123456789

计算其校验码的过程为:

@前十二位的奇数位和6+0+2+4+6+8=26

@前十二位的偶数位和9+1+3+5+7+9=34

@将奇数和与偶数和的三倍相加26+34*3=128

@取结果的个位数:128的个位数为8

@用10减去这个个位数10-8=2

所以校验码为2

(注:如果取结果的个位数为0,那么校验码不是为10(10-0=10),而是0)

实现方法ean13()计算验证码,输入12位条码,返回带验证码的条码。

例:输入:692223361219输出:6922233612192

27:求两个整数的最大公约数和最小公倍数

28:将100元兑换为1元、5元、10元的零钱,请问有多少种兑换方法?

29:用100元人民币兑换10元,5元,1元的纸币(每种都要有)共50张,计算有多少种兑换方案

30:设计Java程序,假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料?


13:使用Java实现输出如下图形。

 

//(图形一)-----------外循环控制行数---内循环控制列数
public static void main(String[] args) {
    for(int i=1;i<=3;i++){
        for (int j=3-i;j>0;j--){
            System.out.print(" ");
        }
        for (int k=1;k<=2*i-1;k++){
            System.out.print("*");
        }
        System.out.println();
    }
//(图形二)-----------外循环控制行数---内循环控制列数
public static void main(String[] args) {
    for (int i = 1;i<=6;i++){    //上半部分  6行------分行输出
        for (int j =6-i;j>0;j--){   //      每行空格数  第一行i=1-----循环5次-----输出5个空格
            System.out.print(" ");
        }
        for (int k = 1;k<=2*i+3;k++){        //每行星数   第一行i=1-----循环5此----输出5个星
            System.out.print("*");
        }
        System.out.println();
    }

    for (int m = 1;m<=5;m++){
        for (int n =1;n<=m;n++){
            System.out.print(" ");
        }
        for (int l = 2*m+3;l<18;l++){
            System.out.print("*");
        }
        System.out.println();
    }
}
//(图形三)-----------外循环控制行数---内循环控制列数
public static void main(String[] args) {
    System.out.println("        *");
    //--------------------上半部分-----------------------
    for (int a =1;a<=8;a++){                 //共8行---每行输出
        for (int b = 1;b<=8-a;b++){          //*前空格---按行输出---a=1---输出7个空格
            System.out.print(" ");
        }
        System.out.print("*");               //每次结束空格后都输出一次*
        for (int c=1;c<=2*a-1;c++){          //*后空格---按行输出---a=1----输出1个空格
            System.out.print(" ");
        }
        System.out.println("*");            //每次结束空格后都输出一次*
    }
    //--------------------下半部分-----------------------
    for (int i=1;i<=7;i++){                  //共7行
        for (int j = 1;j<=i;j++){           //*前空格-----i=1----输出1个空格
            System.out.print(" ");
        }
        System.out.print("*");
        for (int k = 2*i-1;k<=13;k++){      //*后空格-----i=1----输出13个空格
            System.out.print(" ");
        }
        System.out.println("*");
    }
    System.out.println("        *");
}

//(图形四)-----------外循环控制行数---内循环控制列数
public static void main(String[] args) {
    System.out.println("***************");

    for (int i = 1;i<=7;i++){
        for (int j = 1;j<=8-i;j++){         //空格前----每行输出*数
            System.out.print("*");
        }
        for (int k = 2*i-1;k>0;k--){       //每行输出空格
            System.out.print(" ");
        }
        for (int l = 1;l<=8-i;l++){         //空格后----每行输出*数
            System.out.print("*");
        }
        System.out.println();            //每行结束换行
    }
}

14:实现双色球的彩票功能。规则:从36个红球中随机选择不重复的6个数,从15个篮球中随机选择1个组成一注彩票。可以选择买多注。

public static void main(String[] args) {
    //实现双色球的彩票功能。规则:从36个红球中随机选择不重复的6个数,从15个篮球中随机选择1个组成一注彩票。可以选择买多注。

    //红球中----随机选择6个随机数字
    //键盘输入选择几注
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入您需要购买的注数:");
    int times = sc.nextInt();

    for (int a = 1;a<=times;a++){
        for (int i= 1;i<=6;i++){
            int num = (int)(Math.random()*36+1);
            int storage = 0;
            if (num!=storage){                      //判断下一位随机数字与上一位是否重复
            System.out.print("红球:"+num+"\t");}
            storage = num;                            //将上一位随机数字赋值给一个存储变量
        }
        int num1 = (int)(Math.random()*14);
        System.out.println("蓝球:"+num1);
    }

15:输出1-100之间的不能被5整除的数,每5个一行。

public static void main(String[] args) {
    //输出1-100之间的不能被5整除的数,每5个一行。
    int count = 0;                  //计数器

    for (int i = 1;i<=100;i++){
        if (i%5!=0){
            System.out.print(i+"\t");
            count++;
        }

        if (count!=0){                    //循环过程中1-4的时候  无法进行进入上面if中,此时count的值一直为0,此时如果不进行判断--会一直输出换行
            if (count%5==0){
                System.out.println();
                count= 0;               //循环过程中的6-9的时候  无法进行进入上面if中,此时count的值一直为5,会一直输出换行----因此赋值0后重新进行循环判断
            }
        }
    }

16:输出斐波那契数列数列的前20项

public static void main(String[] args){
    //输出斐波那契数列数列的前20项(1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765)
    //从第三项开始,结果为前两项的和
    int num1 = 1;
    int num2 = 1;
    for (int i = 1;i<=18;i++){
        int a = num1+num2;          //第三个变量的值=第一个变量中的值+第二个变量中的值
        System.out.print(a+"  ");
        num1 = num2;   //将第二项的值赋给第一个变量中
        num2 = a;      //将第三项的值赋给第二个变量中
    }

17:输出一个整数的二进制数、八进制数、十六进制数。

public static void main(String[] args) {
    //输出一个整数的二进制数、八进制数、十六进制数。
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入一个整数:");
    int num = sc.nextInt();

    for (int i = 1;i<=i+1;i++){
        int a = num%2;
            num = num/2;
        System.out.print(a);
        if (num==1){
            System.out.print(num);
            break;
        }
    }

18:随机产生一个字母,如果是大写字母则输出“yes”,否则输出“no”

public static void main(String[] args) {
    //随机产生一个字母,如果是大写字母则输出“yes”,否则输出“no”
    //大写字母ASCII【65,90】-----------小写字母【97,122】
    for (int i =1;i<=i+1;i++){
        int num = (int)(Math.random()*57+65);    //随机输出一个【65,122)
        if (num>=65 && num<=90){
            char letter = (char) num;
            System.out.println(letter);
            System.out.println("Yes");
            break;
        }else if (num>=97 && num<=122){
            char letter = (char) num;
            System.out.println(letter);
            System.out.println("No");
            break;
        }
    }

19:随机产生一个字符,判断:如果为大写字母则输出“大写字母”;如果为小写字母则输出“小写字母”;否则怎输出“其他字符”;

       //随机产生一个字符,判断:如果为大写字母则输出“大写字母”;如果为小写字母则输出“小写字母”;否则怎输出“其他字符”;
        //字符编码【0,127】
//        for (int a = 0;a<=a+1;a++){                 //死循环
            int num = (int)(Math.random()*127);             
            if (num>=65 && num<=90){
                char letter = (char) num;
                System.out.println(letter);
                System.out.println("大写字母");
//                break;
            }else if (num>=97 && num<=122){
                char letter = (char) num;
                System.out.println(letter);
                System.out.println("小写字母");
//                break;
            }else{
                System.out.println("其他字符");
//                break;
            }

20:求100到1000之间的所有能被5和6整除的整数,每行显示5个

//求100到1000之间的所有能被5和6整除的整数,每行显示5个

//计数变量
int count = 0;

for (int i= 100;i<=1000;i++){
    if (i%5==0&&i%6==0){
        System.out.print(i+"\t");
        count++;
    }

    if (count!=0){
        if (count%5==0){
            System.out.println();
            count = 0;
        }
    }

21:求和:1/3+3/5+5/7+7/9+………..+97/99

    //求和:1/3+3/5+5/7+7/9+………..+97/99
    double sum = 0;

    for (double i=1;i<=97;i+=2){
        double j = i+2;
        sum += i/j;
    }
    System.out.println(sum);
}

22:输出100以内的所有素数,每行显示5个;并求和。

//输出100以内的所有素数,每行显示5个;并求和
//素数-----大于1的自然数----因数只有1和本身
int count = 0;

for (int i = 2;i<=100;i++){

    int j=2;
    for (; j<=i;j++)            //除以j----判断因素---直到得到一个因数
        if (i%j==0){
            break;              //一旦获得第一个因数   立刻停止循环  获得j的值进行判断
        }

    if (i==j){              //如果得到的第一个因数是本身-----代表是素数
        System.out.print(i+"\t");
        count++;
    }

    if (count!=0){          //每5个一行输出
        if (count%5==0){
            System.out.println();
            count = 0;
        }
    }
}

23:山上有一口缸可以装50升水,现在有15升水。老和尚叫小和尚下山挑水,每次可以挑5升。问:小和尚要挑几次水才可以把水缸挑满?通过编程解决这个问题。

提示:

(1) 用整型变量water表示水缸里的水“int water = 15;”。

(2) 用整型变量l表示小和尚下山挑水的次数“int l = 0;”。

(3) 分析循环条件(水少于50升),循环操作(水增加5升,挑水次数增加1)。

(4) 套用while循环(或do-while循环)写出代码。

        /*山上有一口缸可以装50升水,现在有15升水。老和尚叫小和尚下山挑水,每次可以挑5升。问:小和尚要挑几次水才可以把水缸挑满?通过编程解决这个问题。
            提示:
                    (1) 用整型变量water表示水缸里的水“int water = 15;”。
                    (2) 用整型变量l表示小和尚下山挑水的次数“int l = 0;”。
                    (3) 分析循环条件(水少于50升),循环操作(水增加5升,挑水次数增加1)。
                    (4) 套用while循环(或do-while循环)写出代码。
        */
/*      //----------------------------for循环--------------------------------
        int count = 0;
        for (int i =15;i<50;i+=5){    //初始为15   满足条件每次加5升水   第一次15升的时候  次数为1---所有后面要剪掉第一次水
            count++;
        }
        System.out.println(count-1);*/

/*        //---------------------------while循环-----------------------------
        int water = 15;
        int l  = 0;
        while(water<50){
            water +=5;
            l++;
        }
        System.out.println(l);*/

        //----------------------------do-while-----------------------------
        int water = 15;
        int l = 0;
        do {
            water+=5;
            l++;
        }while(water<50);
        System.out.println(l);
    }

24:李白无事街上走,提壶去买酒。遇店加一倍,见花喝一斗,五遇花和店,喝光壶中酒,试问李白壶中原有多少斗酒?(使用for循环结构编程实现)

提示:采用逆向思维分析问题。

/*
        李白无事街上走,提壶去买酒。遇店加一倍,见花喝一斗,五遇花和店,喝光壶中酒,试问李白壶中原有多少斗酒?
                                (使用for循环结构编程实现)
                                 提示:采用逆向思维分析问题。
*/

/*分析:      店                    花
            0.5                   1                 最后
            0.75                 1.5
            0.875                1.75
      (1+0.875)/2          1+0.875
   {(1+0.875)/2+1}/2     (1+0.875)/2+1
 */

double  wineShop = 0;
double   flower;
for (int i= 1;i<=5;i++){
    flower = wineShop+1;
    wineShop = flower/2;
    System.out.println(wineShop);
}

25:开发一个标题为“FlipFlop”的游戏应用程序。它从1计数到100,遇到3的倍数就替换为单词“Flip”,5的倍数就替换为单词“Flop”,既为3的倍数又为5的倍数则替换为单词“FlipFlop”。

/*              开发一个标题为“FlipFlop”的游戏应用程序。从1计数到100
                          遇到3的倍数就替换为单词“Flip”,
                          遇到5的倍数就替换为单词“Flop”,
                          既为3的倍数又为5的倍数则替换为单词“FlipFlop”。-----------------15的倍数
 */

for (int i = 1;i<=100;i++){
    if (i%3==0 && i%5!=0){
        System.out.println(i+"  "+"Flip");
    }else if (i%5==0 && i%3!=0){
        System.out.println(i+"  "+"Flop");
    }else if (i%15==0){
        System.out.println(i+"  "+"FlipFlop");
    }

26:生成13位条形码

Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。

例如:690123456789

计算其校验码的过程为:

@前十二位的奇数位和6+0+2+4+6+8=26

@前十二位的偶数位和9+1+3+5+7+9=34

@将奇数和与偶数和的三倍相加26+34*3=128

@取结果的个位数:128的个位数为8

@用10减去这个个位数10-8=2

所以校验码为2

(注:如果取结果的个位数为0,那么校验码不是为10(10-0=10),而是0)

实现方法ean13()计算验证码,输入12位条码,返回带验证码的条码。

例:输入:692223361219输出:6922233612192

       //Scanner键盘录入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入12位数字:");
        long num = sc.nextLong();

//        long num = 690123456789L;
        long a = num;
        int oddSum = 0;
        int evenSum = 0;
        //求出奇数和以及偶数和
        for (int i = 1;i<=12;i++){
            long lastNum = num%10;
            if(i%2==0){
                oddSum += lastNum;            //偶数位和
            }else{
                evenSum += lastNum;             //奇数位和
            }
            num = num/10;

        }
        //将奇数和与偶数和的三倍相加
        int sum = oddSum+evenSum*3;
        //取结果的个位数
        int bits = sum%10;
        //用10减去这个个位数
        int checkNum = 10-bits;
        //判断是否为0
        if (sum%10!=0){
            System.out.println(a+""+checkNum);
        }else{
            System.out.println(a+"0");
        }

27:求两个整数的最大公约数和最小公倍数

//求两个整数的最大公约数和最小公倍数

//Scanner键盘输入两个整数
Scanner sc = new  Scanner(System.in);
System.out.println("请输入第一个整数:");
int num1 = sc.nextInt();
System.out.println("请输入第二个整数:");
int num2 = sc.nextInt();

//判断大小--------------------------------使得num1为两数中较大值
if (num1=1;i--){
    if (num1%i==0 && num2%i==0){
        System.out.println("这两个数的最大公约数位:"+i);
        break;
    }

28:将100元兑换为1元、5元、10元的零钱,请问有多少种兑换方法?

public static void main(String[] args) {
    //将100元兑换为1元、5元、10元的零钱,请问有多少种兑换方法?
    for (int i=0;i<=100;i++){                      //一元最少0张,最多100张
        for (int j =0;j<=20;j++){                       //5元最少0张,最多20张
            for (int k = 0;k<=10;k++){                      //10元最少0张,最多10张
                if (i+5*j+10*k==100){
                    System.out.println(i+"张1元"+"+"+j+"张5元"+"+"+k+"张10元");
                }
            }
        }
    }

29:用100元人民币兑换10元,5元,1元的纸币(每种都要有)共50张,计算有多少种兑换方案

    //用100元人民币兑换10元,5元,1元的纸币(每种都要有)共50张,计算有多少种兑换方案
    int count = 0;
    for (int tenYuan = 1;tenYuan<=5;tenYuan++){            //每种都要有----从1开始
        for (int wuYuan = 1;wuYuan<=10;wuYuan++){
            for (int yiYuan = 1;yiYuan<=50-tenYuan-wuYuan;yiYuan++){    //共50张
                if (tenYuan*10+wuYuan*5+yiYuan==100){
                    System.out.println("一元:"+yiYuan+"\t"+"五元:"+wuYuan+"\t"+"十元:"+tenYuan);
                    count++;
                }
            }
        }
    }
    System.out.println("共有:"+count+"种方法");
}

30:设计Java程序,假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料?

   public static void main(String[] args) {
        //设计Java程序,假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料?
            //三个空瓶换一瓶饮料-----意味着每次总量减少两瓶代表喝了三瓶
        int amount = 0;         //能够兑换一瓶的瓶数
        for (int i = 50;i>2;i-=3){      //每次减少两瓶----最后剩余两瓶没有办法兑换----因此剩下的两瓶需要单独拿出来
            amount+=3;
            i++;
        }
        int sum = amount+2;
        System.out.println("总共喝了:"+sum+"瓶饮料");
    }
}

你可能感兴趣的:(Java小白,java)