Java编程题(4)

这是我第四次给大家分享题,如果想看看以前的例题,请点开我的博客,查看作业分栏。谢谢收看。

今天我们来看一些关于流程控制语句的例题,循环是我们经常能使用到的。下面就一起来看下题吧。

Demo03_07

Java编程题(4)_第1张图片
这个题我们还是先找数据:h q m j k year。
大致这个题就分为这些步骤步骤:
1.提示用户输入日期;
2.对特殊的1月和2月做处理
3.计算;
那这个题主要考的就是计算,注意题中提示的1.2月就行,钉准就肯定错不了。
下面是代码演示:

import java.util.Scanner;
class Demo03_07{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        //1.先输入年份
        System.out.print("请输入年份:");
        int year=scanner.nextInt();
        //输入月份 1月 2月分别用13 14代替 同时year-1
        System.out.print("请输入月份:");
        int month=scanner.nextInt();
        //输入日期
        System.out.print("请输入日期:");
        int day=scanner.nextInt();

        //2对特殊的1月和2月做处理
        if(month==1||month==2){
            month+=12;
            year-=1;
        }
        //3.套公式
        int h=(day+26(month+1)/10+year%100+year%100/4+year/100/4+5*year/100)%7;
        
        switch(h){
            case 0:
                System.out.println("是周六");
                break;
            case 1:
                System.out.println("是周日");
                break;
            case 2:
                System.out.println("是周一");
                break;
            case 3:
                System.out.println("是周二");
                break;
            case 4:
                System.out.println("是周三");
                break;
            case 5:
                System.out.println("是周四");
                break;
            case 6:
                System.out.println("是周五");
                break;
        }
    }
}

Demo03_09

Java编程题(4)_第2张图片
这个题就包含了一点点高中数学知识了,你要计算这个点的位置
具体步骤:
1.提示用户输入一个点的坐标
2.先大致判断一下坐标的范围
3.精确的判断坐标的范围
就这三步一下解决。写题嘛脑子要灵光点。
下面是代码演示:

import java.util.Scanner;
class Demo03_09{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        //1.提示用户输入一个点的坐标
        System.out.print("请输入一个坐标:");
        double x=scanner.nextDouble();
        double y=scanner.nextDouble();
        //2.先大致判断一下坐标的范围
        //3.再精确的判断坐标的范围
        if(x>=0&&x<=200&&y<=-0.5*x+100){
            System.out.println("点再三角形内");
        }else{
            System.out.println("点再三角形外");
        }
    }
}

Demo03_10

Java编程题(4)_第3张图片
这个题跟上个题差不多也是算距离的
先找数据:中心xy坐标 width height
1.提示用户输入两个矩形的数据
2.判断矩形的空间分布
3.精确坐标的范围
4.得出结论
下面是代码演示:

import java.util.Scanner;
class Demo03_10{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        //1.先输入大矩形的中心,宽和高
        System.out.print("请输入第1个矩形的信息:");
        double x1=scanner.nextDouble();
        double y1=scanner.nextDouble();
        double w1=scanner.nextDouble();
        double h1=scanner.nextDouble();
        //2.再输入小矩形的中心,宽和高
        System.out.print("请输入第2个矩形的信息:");
        double x2=scanner.nextDouble();
        double y2=scanner.nextDouble();
        double w2=scanner.nextDouble();
        double h2=scanner.nextDouble();

        double inXMin=x1-(w1-w2)/2;
        double inXMax=x1+(w1-w2)/2;
        double inYMin=y1-(h1-h2)/2;
        double inYMax=y1+(h1-h2)/2;

        double outXMin=x1-(w1+w2)/2;
        double outXMax=x1+(w1+w2)/2;
        double outYMin=y1-(h1+h2)/2;
        double outYMax=y1+(h1+h2)/2;
        if(x2>=inXMin&&x2<=inXMax&&y2>=inYMin&&y2<=inYMax){
            System.out.println("小矩形在大矩形里面!");
        }else if(x2<=outXMin||x2>=outXMax||y2<=outYMin||y2>=outYMax){
            System.out.println("小矩形在大矩形外面!");
        }else{
            System.out.println("小矩形和大矩形相交!");
        }
    }
}

Demo03_11

Java编程题(4)_第4张图片
这个题就是让你统计数据并运算,不难,你要盯紧每个数据的分类,很好算的。
1.输入一个数字
2.再判断数字是否为0如果为0则退出不是则继续
3.分辨数据正负,并给相应数组加一。
4.计算总和,平均数
下面是代码演示:

import java.util.Scanner;
class Demo03_11{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        double sum=0;  //总和
        int positives=0;    //正数的个数
        int negatives=0;    //负数的个数
        System.out.print("请输入若干数字:");
        while(true){
            int num=scanner.nextInt();
            if(num!=0){
                sum+=num;
                if(num>0){
                    positives++;
                }else{
                    negatives++;
                }
            }else{
                break;  //跳出当前循环
            }
        }   
        if(positives+negatives==0){
            System.out.println("没有其他数字的输入,除了0");
        }else{
            System.out.println("正数的个数"+positives);
            System.out.println("负数的个数"+negatives);
            System.out.println("总和"+sum);
            System.out.println("平均值"+sum/(positives+negatives)); 
        }
    }
}

Demo03_12

在这里插入图片描述
还是先找数据:n1 n2 k gcd
先整一下思路最大公约数就等于:把两个最小的挑出来,一次减一,除于两个数都能整除,减到1为之,到一则为一。
步骤:
1.输入两数字
2.比较大小,依次递减,整除
3.得出数字,退出循环。
下面是代码演示:

import java.util.Scanner;
class Demo03_12{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        //1.输入两个数字
        System.out.print("请输入两个数字:");
        int n1=scanner.nextInt();
        int n2=scanner.nextInt();
        int gcd=1;
        for(int i=n1<n2?n1:n2;i>=1;i--){
            if(n1%i==0&&n2%i==0){
                gcd=i;
                break;
            }
        }
        System.out.println(gcd);

    }
}

Demo03_16

Java编程题(4)_第5张图片
看这个图先找规律:
第4行的数字1 2 4 8 4 2 1
分别对应二的次方为:0 1 2 3 2 1 0
按照等差数列近似表示为-3 -2 -1 0 1 2 3
第5行的数字1 2 4 8 16 8 4 2 1
分别对应二的次方为: 0 1 2 3 4 3 2 1 0
按照等差数列近似表示为 x -4-3-2-1 0 1 2 3 4
这样我们就能得到循环公式,用绝对值很好算的。

记得要打印空格组成金字塔结构

对于打印一些对称性的三角形图案或者是类似的问题
尽量向绝对值考虑

下面为代码演示:

class Demo03_16{
    public static void main(String[] args){
        for(int i=1;i<=8;i++){
            for(int k=1;k<=8-i;k++){
                System.out.print("    ");
            }
            for(int x=-(i-1);x<=i-1;x++){
                System.out.printf("%4d",(int)Math.pow(2,i-1-Math.abs(x)));
            }
            System.out.println();
        }
    }
}

Demo03_14

Java编程题(4)_第6张图片
这个题相对于上面来说很简单
1.打印空格
2.打印数字(顺带找出规律)
这个题的规律就是
第4行 x∈[-3,3] y=|x|+1
第5行 x∈[-4,4] y=|x|+1
这就很明显了把
下面是代码:

import java.util.Scanner;
class Demo03_14{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入行数:");
        int line=scanner.nextInt();
        for(int i=1;i<=line;i++){
            for(int k=1;k<=(line-i);k++){
                if(line<10){
                    System.out.print("  ");
                }else{
                    System.out.print("   ");
                }
            }
            for(int x=-(i-1);x<=i-1;x++){
                if(line<10){
                    System.out.printf("%-2d",Math.abs(x)+1);
                }else{
                    System.out.printf("%-3d",Math.abs(x)+1);
                }
            }
            System.out.println();
        }
    }
}

今天的分享就到这了,下次再见。

你可能感兴趣的:(Java练习题集)