第五天总结(循环练习题)

怎么硕呢。。

看笔记发现今天没讲知识点,讲了一天题那就总结题

这个题唯一不好算的就是把一月和二月分别当作13和14月,这就是在前边的基础上用一个if语句就可以了

if(month==1||2){

    month+12;    

}

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();
        //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+=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){
            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;
        }
    }
}

这种题怎么硕()其实是高中学的知识,首先缩小x,y的范围,其次你总不能和园一样去找点到点的距离,

那么这要怎么算呢,很简单,可以算出这条边的函数表达式变成二元一次方程,然后带进题里就可以了

 

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("点再三角形外");
        }
    }
}

 

 

这个题隆重介绍以下,题上问的是小矩形和大矩形的关系无非是两种,要么相交,要么不相交,不相交分为两种,一种在里边,一种在外边,那要是在里边,他的两中心点的距离横坐标不就是大矩形的宽减去小矩形的宽然后除以二,纵坐标也用这种思想表达出来,在外边的话,就是把刚刚那个公式括号里的减号变成加号。

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

 

这个题无非就是加一个计数的量,如果是正数,那么整数的计数器加一,要是负数,那么负数的计数器加一

最后输出计数器就行

 

import java.util.Scanner;
/* 
输入一个数字
再判断数字是否为0
如果为0则退出
不是则继续
*/
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)); 
        }
    }
}

 

 

import java.util.Scanner;
class Demo03_12{
    /* 
    21  42
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16~21
    3 7
    */
    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);

    }
}

 

这个题是什么意思呢,就是说把这个都进来的书一直除,除到什么时候呢,一直除到他的最终结果是零而除数就是从2~9的整数然后依次输出除数,这就是最小因子。

/* 
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++){
                if(num%i==0){
                    System.out.print(i+" ");
                    num=num/i;
                    break;
                }
            }
            if(num==1){
                break;
            }
        }
    }
}

 

连着14 15 16这三个题都是让输出形状的,只要把握好行数的这个i就好,遇到哪一行就看这一行的行数和这一行的数字有什么关系,然后用循环表达出来。

/*
 4  3  2  1 2 3 4
-3 -2 -2  0 1 2 3
第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();
        }
    }
}

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

/*
第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
*/
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();
        }
    }
}
/*
对于打印一些对称性的三角形图案或者是类似的问题
尽量向绝对值考虑
*/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值