2020/07/13-Java循环结构练习题(打印杨辉三角、打印0-7组成的所有奇数,各个位数上的数字无重复)

2020/07/13-Java循环结构练习题(打印杨辉三角、打印0-7组成的所有奇数,各个位数上的数字无重复)

一、打印出杨辉三角形(要求打印出10行如下图)

  • 程序分析:
  • 1
  • 1 1
  • 1 2 1
  • 1 3 3 1
  • 1 4 6 4 1
  • 1 5 10 10 5 1
  • 思路:
  • 首先每一行第一个数都是1
  • 每一行数字的规律是:1; i/1; i(i-1)/12; (i-1)(i-2)/23;… int i =0
  • 重点:分析每一行数字特点与i的关系,也要注意i的起始值设置是0
  • 例如对于第3行:1,2,1
  • 令v=1; a=i,
  • i=2代表第三行, v=v*a a–; 输出:v=v/j,其中 定义int j=0,j=0,表示第一列中的第1个数字,j=1表示一列中第二个数字
/**
*/
public class test15 {
    
    
    public static void main(String[] args) {
    
    
        int num = 5;
        for (int i = 0; i < num; i++) {
    
    
            int v = 1;
            int a = i;
            for (int j = 0; j <= i; j++) {
    
    
                int b = j;
                if(b==0)
                    System.out.print(1+" ");
                else {
    
    
                    System.out.print((v = v / j) + " ");
                }
                v=v*a;
                a--;

            }
            System.out.println();
        }

    }
}

二、求0-7所能组成的奇数个数

分析思路:

  • 个位1,3,5,7时才为奇数

  • 分别计算2位数,3位数,4位数…的奇数数目,例如:

  • 2位数,就有6*4种可能 因为最高位(首位)不能为0,所以是7-1=6种可能

  • 3位数,就有664种,出去首位一个数,和个位一个数,第二位又8-2=6种

  • 4位数,就有665*4种可能

  • 所以2位数时应该单独写,2以后的数字可以根据循环规律写
    */

public class test16 {
    
    
    public static void main(String[] args) {
    
    
        int total = 4;
        for (int i = 2; i <=8 ; i++) {
    
    //外层循环定义位数
            int sum = 4;
            for (int j = 1; j < i; j++) {
    
    
                if (j==1){
    
    
                    sum=sum*6;
                }else {
    
    
                    sum=sum*(8-j);
                }
            }
            total+=sum;


        }
        System.out.println(total);
    }
}

三、求1000以内质数和非质数的正差值

  • 思路:
  • 2是质数,1既不是质数也不是合数
  • 质数+合数+1=所有数
  • 先求出质数,再用总和-质数总和=非质数总和
public class khzy2 {
    
    
    public static void main(String[] args) {
    
    
        int j = 0;
        int sum = 2;
        int num = 0;
        int s = 0;
        for (int i = 1; i <1000 ; i++) {
    
    
            num=num+i;
        }
        System.out.println(num);
        for (int i = 2; i <1000 ; i++) {
    
    
            for ( j = 2; j <i ; j++) {
    
    
                s =i%j;
                if (s==0){
    
    
                    break;
                }
            }
            if (s!=0){
    
    
                sum = sum + i;

            }

        }
        System.out.println("质数:"+sum);
         int n = num - sum;
         int k = n - sum;
        System.out.println(k);
    }
}

四、随机产生6个1~ 33之间的随机数,和一个1~15之间的随机数,这7个数不能重复。

  • 思路:
  • 1、int n = (int)(Math.random()10); 产生的时 0-9之间的随机数,故34会产生0-33之间的随机数
  • 2、由于各数不能重复,加一个||语句,确保每两个数两两比较互不相等。
  • 3、不相等则打印出7个数,相等则使用contiune语句,退出本次循环,继续下一次循环。
public class khzy1 {
    
    
    public static void main(String[] args) {
    
    
        int flag = 0;
        do {
    
    
            int num1 = (int) (Math.random() * 34);
            int num2 = (int) (Math.random() * 34);
            int num3 = (int) (Math.random() * 34);
            int num4 = (int) (Math.random() * 34);
            int num5 = (int) (Math.random() * 34);
            int num6 = (int) (Math.random() * 34);
            int num7 = (int) (Math.random() * 16);
            if ((num1!=num2)||(num1!=num3)||(num1!=num4)||(num1!=num5)||(num1!=num6)
                    ||(num1!=num7)||(num2!=num3)||(num4!=num2)||(num5!=num2)||(num6!=num2)
                    ||(num7!=num2)||(num4!=num3)||(num5!=num3)||(num6!=num3)||(num7!=num3)||
                    (num4!=num5)||(num4!=num6)||(num4!=num7)||(num4!=num2)||(num5!=num6)||(num5!=num7)||(num6!=num7)
            ){
    
    
                flag = 1;
                System.out.println(num1+" "+num2+" "+num3+" "+num4+" "+num5+" "+num6+" "+num7+" ");
            };
        }while (flag == 0);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_42005540/article/details/107327825