欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA第三章习题代码之总结

程序员文章站 2022-03-19 11:54:07
...

JAVA第三章习题代码之总结

 

3.7

JAVA第三章习题代码之总结

分析:

1.数据:某一天 h,月份m,年year.

 2.步骤:1.提示用户输入年月和该月的哪一天。

              2.带入公式计算h。

              3.输出它是一周中的星期几。

import java.util.Scanner;
class Demo3_7{
    public static  void main(String[]args){
        Scanner scanner=new  Scanner(System.in);
        //1.先输入年份
        System.out.print("请输入年份:");
        int year=scanner.nextInt();
        
        //2.输入月份 1月 2月分别用13 14代替 同时year-1
        System.out.print("请输入月份:");
        int month=scanner.nextInt();
        
        //3.输入日期
        System.out.print("请输入日期:");
        int day=scanner.nextInt();
        
        //4.对特殊的1月和2月做处理
        if(month==1||month==2){ //如果month为1或者2,则给month的值加12,给year的值减1.
            month+=12;
            year-=1;
        }
        //5.套公式
        int h=(day+26*(month+1)/10+year%100+year%100/4+year/100/4+5*year/100)%7;//计算天
        
        switch(h){                          //用switch-case来实现数字具体指的是星期几。
            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;
        }
    }
}


注意:对一月和二月的特殊处理。

 

3.9

 

JAVA第三章习题代码之总结

分析:

1.数据:两点的坐标

2.步骤:1.提示用户输入一个点的x坐标和y坐标

              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){       //x范围[0,200]
            System.out.println("点再三角形内"); //若y<=-0.5*x+100,点就在三角形内。
        }else{
            System.out.println("点再三角形外");
        }
    }
}

注意:主要求出斜边的表达式。

 

 

3.10

JAVA第三章习题代码之总结

分析:

1.数据:坐标(x2,y2),坐标(x1,y1),h1,w1,h2,w2.

2.步骤:1.提示用户输入两个矩形中点的坐标以及每个的高和宽.

               2.如图:求出小矩形在大矩形里面时小x2,y2的范围,以及在外面,相交时的范围。

               JAVA第三章习题代码之总结

 

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("小矩形和大矩形相交!");
        }
    }
}

注意:用极限的思想做。

 

 

3.11

JAVA第三章习题代码之总结

分析:

步骤:1.请输入我指定个数的整数。

           2.判断正数和负数分别为多少个。

           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)); 
        }
    }
}

注意:未指定的个数,就要考虑while循环。指定的个数用for 循环。

 

3.12

JAVA第三章习题代码之总结

 

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);

    }
}

注意:break是结束for 循环的。

 

3.13

JAVA第三章习题代码之总结

分析:

步骤:1.输入一个整数。

           2.求最小因子。

           3.按升序输出。(例:
120  2~120 ->2
60   2~60  ->2
30   2~30  ->2
15   2~15  ->3
5    2~5   ->5
1   
 )

import java.util.Scanner;
class Demo03_13{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int num=scanner.nextInt();
        while(true){
            for(int i=2;i<=num;i++){              //15%2取余不等于0,然后i++为3,再运行15%3
                if(num%i==0){                     //==0,然后输出3
                    System.out.print(i+" ");
                    num=num/i;
                    break;
                }
            }
            if(num==1){
                break;
            }
        }
    }
}

注意:第一个break结束for循环。

 

3.14

JAVA第三章习题代码之总结

分析:

拿出第四行找出规律:

4  3  2  1 2 3 4     //值 y
-3 -1 -2  0 1 2 3   //坐标 x
第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("  ");//当行数小于10行时输出两个空格
                }else{
                    System.out.print("   ");//当行数大于10行时输出三个空格
                }
            }
            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();
        }
    }
}

 

3.15

JAVA第三章习题代码之总结

class Demo03_15{
    public static void main(String[] args){
        //图案一
        for(int i=1;i<=6;i++){
            for(int j=1;j<=i;j++){
                System.out.print(j+" ");   
            }
            System.out.println();
        }
        //图案二

        for(int i=1;i<=6;i++){
            for(int j=1;j<=7-i;j++){
                System.out.print(j+" ");
            }
            System.out.println();
        }
       
        //图案三
        for(int i=1;i<=6;i++){
            for(int k=1;k<=6-i;k++){
                System.out.print("  ");  //先输出空格
            }
            for(int j=i;j>=1;j--){
                System.out.print(j+" ");//再输出数字
            }
            System.out.println();
        }
        //图案四

        for(int i=1;i<=6;i++){
            for(int k=1;k<=i-1;k++){
                System.out.print("  ");
            }
            for(int j=1;j<=7-i;j++){
                System.out.print(j+" ");
            }
            System.out.println();
        }
    }
}

注意:先抛开图形的形状,找出数字之间的规律,再写代码实现。

 

3.16

JAVA第三章习题代码之总结

分析:

第4行  
         1  2  4 8 4 2 1
         0  1  2 3 2 1 0
      x -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

JAVA第三章习题代码之总结

根据:x属于[-(i-1),i-1] ,y=i-1-|x|, 2^y ,来打印数字。

 

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();
        }
    }
}

注意:对于打印一些对称性的三角形图案或者是类似的问题,用绝对值方便。