Java练习题总结(三)

/*
数据:a b c delt r1 r2
步骤:
1.提示用户输入abc三个参数
2.计算delt=b*b-4*a*c
3.判断delt的值
    3.1 delt>0
        输出两个解
    3.2 delt==0
        输出一个解
    3.3 delt<0
        无实数解
*/
import java.util.Scanner;
class  Home3_1{
    public static void main(String[] args){
        //1.
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入a,b,c:");
        double a=scanner.nextDouble();
        double b=scanner.nextDouble();
        double c=scanner.nextDouble();
        //2.
        double delt=b*b-4*a*c;
        //3.
        if(delt>0){
            double r1=(-b+Math.sqrt(delt))/(2*a);
            double r2=(-b-Math.sqrt(delt))/(2*a);
            System.out.printf("r1=%.2f,r2=%.2f",r1,r2);
        }else if(delt==0){
            double r=(-b-Math.sqrt(delt))/(2*a);
            System.out.printf("r=%.2f",r);
        }else{
            System.out.println("无实数解!");
        }
    }
}

/*
数据:a,b,c,d,e,f
步骤:
1.提示用户输入四个系数 a,b,c,d,  和两个常数 e,f
2.计算判别式delta的值
3.delta就行判断    
    3.1如果delta不等于0  则方程组有解        
        分别计算两个解并输出   
    3.2如果delta等于0    则方程组无解        
        输出无解
*/
import java.util.*;
class Home03_02
{    
    public static void main(String[] args)    
    {        
        //1.        
        Scanner scanner = new Scanner(System.in);        
        System.out.print("请用户输入a,b,c,d,e,f: ");          
        double a=scanner.nextDouble();		
        double b=scanner.nextDouble();		
        double c=scanner.nextDouble();		
        double d=scanner.nextDouble();		
        double e=scanner.nextDouble();		
        double f=scanner.nextDouble();        
        //2.		
        double delt=a*d-b*c;        
        //3.		
        if(delt!=0)
        {            
            //3.1			
            double x=(e*d-b*f)/delt;			
            double y=(a*f-e*c)/delt;			
            System.out.println("x is "+x+" , and y is "+y);		
        }
        else
        {            
            //3.2			
            System.out.println("has no solution");		
        }      
    }
}

/*
数据:今天的周几 未来的天数 未来的周几
      (0+12)%7=5
      (4+4)%7=1
      (今天的周几+未来的天数)%7=未来的周几
      1月1日是周一 1%7=1
      1 2 3 4 5 6 7
      8 9 10 11 12 13 14
      15 16 17 18 19 20
      1月20日 20%7=6
步骤:
1.输入今天是周几
2.输入未来的几天
3.打印未来的几天是周几
*/
import java.util.Scanner;
class Home3_3{
    public static void main(String[] args){
        //1.
        Scanner scanner=new Scanner(System.in);
        System.out.print("今天是周几:");
        int today=scanner.nextInt();
        //2.
        System.out.print("未来的几天:");
        int future=scanner.nextInt();
        //3.
        int futureDay=(today+future)%7;

        String todayStr="";
        String futureDayStr="";
        
        if(today==0){
            todayStr="周日";
        }else if(today==1){
            todayStr="周一";
        }else if(today==2){
            todayStr="周二";
        }else if(today==3){
            todayStr="周三";
        }else if(today==4){
            todayStr="周四";
        }else if(today==5){
            todayStr="周五";
        }else if(today==6){
            todayStr="周六";
        }

        if(futureDay==0){
            futureDayStr="周日";
        }else if(futureDay==1){
            futureDayStr="周一";
        }else if(futureDay==2){
            futureDayStr="周二";
        }else if(futureDay==3){
            futureDayStr="周三";
        }else if(futureDay==4){
            futureDayStr="周四";
        }else if(futureDay==5){
            futureDayStr="周五";
        }else if(futureDay==6){
            futureDayStr="周六";
        }
        System.out.println("今天是"+todayStr+",未来的日子是"+futureDayStr);
    }
}

/*
12345
12345%10=5 12345/10=1234
1234%10=4  1234/10=123
123%10=3   123/10=12
12%10=2    12/10=1
1%10=1     1/10=0
54321
5*10000+4*1000+3*100+2*10+1
(5*1000+4*100+3*10+2)*10+1
((5*100+4*10+3)*10+2)*10+1
(((5*10+4)*10+3)*10+2)*10+1
((((0*10+5)*10+4)*10+3)*10+2)*10+1

sum=0
sum=sum*10+5;   //5
sum=sum*10+4;   //54
sum=sum*10+3;   //543
sum=sum*10+2;   //5432
sum=sum*10+1;   //54321

*/
import java.util.Scanner;
class Demo03_04{
    public static void main(String[] args){
        //1.输入一个数字
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int num=scanner.nextInt();
        int temp=num;
        //2.拼接出该数字的反序
        int sum=0;
        sum=sum*10+num%10;
        num/=10;
        sum=sum*10+num%10;
        num/=10;
        sum=sum*10+num%10;
        num/=10;
        sum=sum*10+num%10;
        num/=10;
        sum=sum*10+num%10;
        num/=10;
        sum=sum*10+num%10;
        num/=10;
        if(sum==temp){
            System.out.println("是回文");
        }else{
            System.out.println("不是回文");
        }
    }
}

import java.util.Scanner;class Home03_05
{    
    public static void main(String[] args)
    {        
        //1.        
        Scanner scanner = new Scanner(System.in);        
        int a = (int)(Math.random() * 90 + 10);		
        System.out.println("本次中奖号码为"+a);		
        int r = scanner.nextInt();        
        System.out.println("请输入您的彩票数字"+r);        
        //2.		
        int sw = a / 10;//随机数十位		
        int se = a % 10;//随机数各位		
        int y = r / 10;//输入数十位		
        int u = r % 10;//输入数各位					
        if (r < 10 || r >= 100)
        {			
            System.out.println("请输入一个两位整数");		
        }		
        //3.		
        else 
        {			
            if (r == a)
            {			
                System.out.println("奖金10000$");		
            }else if(y == se && u == sw) 
            {			
                System.out.println("奖金为3000$");		
            }
            else if(y == sw || u == se)
            {			
                System.out.println("奖金为1000$");		
            }		
        }    
    }
}

/*
数据:电脑随机产生的一个数字com 用户输入的一个数字usr
    0 1 2
    剪刀 石头 布
步骤:
1.提示用户输入一个数字
2.计算机随机产生一个数字
3.将两个数字进行对比,分输赢
    平局  com==usr
    用户赢 usr=0 com=2 | usr=1 com=0 | usr=2 com=1
    用户输 剩下的都是用户输

随机数
    Math.random() [0,1.0)*3 -> [0,3.0)->(int)[0,3.0)
    Random nextInt(n)
*/
import java.util.*;
class Demo03_06{
    public static void main(String[] args){
        //1.
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入 剪刀0 石头1 布2:");
        int usr=scanner.nextInt();
        //2.
        Random random=new Random();
        int com=random.nextInt(3);

        String usrStr="";
        String comStr="";
        switch(usr){
            case 0: //if usr==0
                usrStr="剪刀"; 
                break;
            case 1:// if usr==1
                usrStr="石头";
                break;
            case 2:// if usr==2
                usrStr="布";
                break;
        }
        switch(com){
            case 0: 
                comStr="剪刀"; 
                break;
            case 1:
                comStr="石头";
                break;
            case 2:
                comStr="布";
                break;
        }
        //3.
        if(usr==com){
            System.out.printf("用户是%s,电脑是%s,平局",usrStr,comStr);
        }else if(usr==0&&com==2 || usr==1&&com==0 || usr==2&&com==1){
            System.out.printf("用户是%s,电脑是%s,用户赢",usrStr,comStr);
        }else{
            System.out.printf("用户是%s,电脑是%s,用户输",usrStr,comStr);
        }
    }
}

/*
数据:
步骤:年 月 日 星期几
1.提示用户输入 年 月 日
2.通过克里斯汀-泽勒计算某天是星期几的算法公式
h=(day+(26*(month+1)/10)+year%100+(year%100/4)+year/100/4+5*year/100)%7;
*/
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;
        }
    }
}

/*
数据:圆的圆心 圆的半径 点的坐标 距离
步骤:
1.提示用户输入点的坐标
2.计算点到圆心之间的距离
3.判断距离和半径之间的关系
    距离>半径   点在圆外
    距离==半径  点在圆上
    距离<半径   点在圆内
*/
import java.util.Scanner;
class Demo03_08{
    public static void main(String[] args){
        //1.
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入坐标点:");
        double x=scanner.nextDouble();
        double y=scanner.nextDouble();
        //2.
        double xo=0;
        double yo=0;
        double radius=10;
        double distance=Math.sqrt(Math.pow(x-xo,2)+Math.pow(y-yo,2));
        //3.
        if(distance>radius){
            System.out.println("点在圆外");
        }else if(distance==radius){
            System.out.println("点在圆上");
        }else{
            System.out.println("点在圆内");
        }
    }
}

/*
步骤:
1.提示用户输入 X Y的值
2.通过单if语句进行判断
*/
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.输入两个矩形的中心坐标以及宽和高
        //1.1先输入大矩形的中心坐标,宽和高
        System.out.print("请输入第1个矩形的信息:");
        double x1=scanner.nextDouble();
        double y1=scanner.nextDouble();
        double w1=scanner.nextDouble();
        double h1=scanner.nextDouble();
        //1.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("小矩形和大矩形相交!");
        }
    }
}

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

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

    }
}

/* 
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;
            }
        }
    }
}

import java.util.Scanner;
class Demo03_14{
    public static void main(String[] args)
    {
        //1.提示用户输入一个1~15之间的整数
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入行数:");
        int line=scanner.nextInt();
        //2.
        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();
        }
    }
}

/*
1.第一行: ?i = 1;  i < 7;  j = 0; ? j <=1; ? ? ?
第二行: ?  i = 2;  i < 7; j = 0; ? j <= 2; ? ? 
第三行: ?  i = 3; ?i < 7; j = 0; ? j <= 3; ? ? 
? ? ? ? ? ? ? ? ? ? ? ?……
列数 j <= i;
*/
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();
        }
    }
}

/*
两层for循环,外层控制行数,内层控制列
第一行乘0次2,输出一次
第二行乘以1次2,输出两次
就是先乘以2,然后再除以2
第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
*/
import java.util.Scanner;
class Home03_16
{
    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++)
                {
                    System.out.print(" ");
                }
                for(int j=-(i-1);j<=i-1;j++)
                {
                    if(j<=0)
                    {
                        System.out.printf("%-4d",(int)Math.pow(2, j+i-1));
                    }else
                    {
                        System.out.printf("%-4d",(int)Math.pow(2, -j+i-1));
                    }
                }
                System.out.println();
            }
    }
}


/*
何为素数 就是除了1和其本身之外 没有其他的数字可以整除的
num
2 ~ m ~ num-1 找到一个数字 如果这个数字m num%m==0 num不是素数
如果一个都没有找到的话 这个数字是素数

*/
class Home3_17{
    public static void main(String[] args){
        int count=0;  //当前素数的个数
        boolean flag=true;//默认这个数字是素数
        for(int num=2;num<=1000;num++)
        {
            for(int m=2;m<=num-1;m++)
            {
                if(num%m==0)//说明num不是素数
                {
                    flag=false;//此时不是素数
                    break;
                }
            }
            //如果for正常执行完毕 都没有找到 是素数
            if(flag)
            {
                count++;
                System.out.print(num+" ");
                if(count%8==0)
                { 
                    //8 16 24 32
                    System.out.println();
                }
            }
            flag=true;//flag的初始值为true
        }
    }
}

import java.util.Scanner;
class Demo03_18{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int imax=scanner.nextInt();
        double sum=0;
        double flag=1;
        for(int i=1;i<=imax;i++){
            //sum+=Math.pow(-1.0,i+1);/(2*i-1);
            sum+=flag/(2*i-1);
            flag=-flag;
        }
        double pi=sum*4;
        System.out.println(pi);
        //  Math.pow(-1,10)  累乘  for -1*-1*-1....
    }
}

import java.util.Scanner;
class Demo03_19{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int imax=scanner.nextInt();
        double e=1;
        double item=1.0;
        for(int i=1;i<=imax;i++){
            item=item*i;    //n!=(n-1)*n;
            e+=1/item;
        }
        System.out.println(e);
    }
}

/*
闰年: 能够被4整除 不能被100整除 或者可以被400整除
*/

class Demo03_20{
    public static void main(String[] args){
        int count=0;
        for(int i=101;i<=2100;i++){
            if(i%4==0&&i%100!=0 || i%400==0){
                count++;
                System.out.print(i+" ");
                if(count%10==0){
                    System.out.println();
                }
            }
        }
        System.out.println("\n闰年一共"+count+"个");
    }
}

class Demo03_21{
    public static void main(String[] args){
        //6 : 1 2 3 4 5 6
        //28: 1 2 4 7 14 
        //n : 1 ~ n/2
        int sum=0;
        for(int n=2;n<=10000;n++){   
            for(int i=1;i<=n/2;i++){
                if(n%i==0){
                    sum+=i;
                }
            }
            if(n==sum){
                System.out.println("完全数"+n);
            }
            sum=0;
        }
    }
}

import java.util.*;
class Demo03_22{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        Random random=new Random();
        int usrWin=0;
        int comWin=0;
        while(true){
            System.out.print("请输入 剪刀0 石头1 布2:");
            int usr=scanner.nextInt();
            int com=random.nextInt(3);
            String usrStr = "";
            String comStr = "";
            switch(usr){
                case 0:
                    usrStr = "剪刀"; 
                    break;
                case 1:
                    usrStr = "石头";
                    break;
                case 2:
                    usrStr = "布";
                    break;
            }
            switch(com){
                case 0: 
                    comStr = "剪刀"; 
                    break;
                case 1:
                    comStr = "石头";
                    break;
                case 2:
                    comStr = "布";
                    break;
            }
            if(usr==com){
                System.out.printf("电脑是%s,用户是%,此局为平局\n",comStr,usrStr);
            }else if(usr==0&&com==2 || usr==1&&com==0 || usr==2&&com==1){
                System.out.printf("电脑是%s,用户是%,恭喜您赢了\n",comStr,usrStr);
                usrWin++;
            }else{
                System.out.printf("电脑是%s,用户是%,很遗憾您输了\n",comStr,usrStr);
                comWin++;
            }
            if(usrWin==2||comWin==2){
                break;
            }
        }
        if(usrWin==2){
            System.out.println("最终玩家赢!");
        }else{
            System.out.println("最终电脑赢!");
        }
    }
}

/*
12/2 6 ~ 0
6/2  3 ~ 0
3/2  1 ~ 1
1/2  0 ~ 1
1100
*/
import java.util.Scanner;
class Demo03_23{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int num=scanner.nextInt();
        String binStr="";
        while(true){
            binStr=num%2+binStr;//"1100"
            num/=2;
            if(num==0){
                break;
            }
        }
        System.out.println(binStr);
    }
}

import java.util.Scanner;
class Demo03_24{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int num=0;
        int max=0;
        int count=0;
        System.out.print("请输入数字:");
        while(true){
            num=scanner.nextInt();
            if(num==0){
                break;
            }else if(num>max){
                max=num;
                count=1;
            }else if(num==max){
                count++;
            }
        }
        System.out.println("max="+max+",count="+count);
    }
}
发布了65 篇原创文章 · 获赞 3 · 访问量 1781

猜你喜欢

转载自blog.csdn.net/weixin_44077638/article/details/104252949