Java第三章例题(1)

学习了流程控制语句,我们来试试例题!

第一题

步骤:

1.定义三个变量,提示用户输入abc三个参数

2.计算delt=b*b-4*a*c

3.判断delt的值

import java.util.Scanner;
class  Demo03_01{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);//1
        System.out.print("请输入a,b,c:");
        double a=scanner.nextDouble();
        double b=scanner.nextDouble();
        double c=scanner.nextDouble();
        double delt=b*b-4*a*c;//2
        if(delt>0){//3
            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("无实数解!");
        }
    }
}

 

 运行结果:

第二题

步骤:(1)定义a,b,c,d,e,f变量,提示用户输入

           (2)定义一个变量m用来存储ad-bc的值

           (3)判断m的值是否为0并输出

代码展示:

import java.util.Scanner;

class Demo03_02{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter 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();
        double m = a*d-b*c;
        if(m==0){
            System.out.println("The equation has no solution");
        }else{
            double x=(e*d-b*f)/(a*d-b*c);
            double y=(a*f-e*c)/(a*d-b*c);
            System.out.println("x is "+x+" and y is "+y);
        }

    }
}

结果展示:

第三题

步骤:

1.提示用户输入代表今天日期的数字

2.提示用户输入一个今天之后的天数,作为代表将来某天的数字

3.打印未来的几天是周几

代码展示:

结果显示:

第四题

分析:本题主要是判断数字的顺序,其实,也可以单独比较百位和个位,就等于跳过了十位数字,如果是四位数字,就不好比较了

拆分数字

12345                                                                         54321

12345%10=5 12345/10=1234                                   5*10000+4*1000+3*100+2*10+1

1234%10=4  1234/10=123                                        (5*1000+4*100+3*10+2)*10+1

123%10=3   123/10=12                                             ((5*100+4*10+3)*10+2)*10+1

12%10=2    12/10=1                                                  (((5*10+4)*10+3)*10+2)*10+1

1%10=1     1/10=0                                                     ((((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

所以,只要正着的顺序和反着的顺序相同即可

代码展示:

结果展示:

第五题

解析:

步骤:

1.提示用户输入一个数字并提示,数字为0-2的整数

2.计算机随机产生一个数字

3.将两个数字进行对比,分输赢  

三种情况:

    平局  com==usr

    用户赢 usr=0 com=2 | usr=1 com=0 | usr=2 com=1

    用户输 剩下的都是用户输

本题需要用到的随机数方法:

(1)Math.random()   [0,1.0)*3 -> [0,3.0)->(int)[0,3.0)   这个区间是左闭右开的,本题用到0-2的数字,只能*3

(2)Random nextInt(n)

代码展示:

结果展示:

 

第六题

步骤:

1.提示用户输入点的坐标

2.根据公式计算点到圆心之间的距离

3.判断距离和半径之间的关系

    三种情况:距离>半径    点在圆外

                      距离==半径  点在圆上

                      距离<半径    点在圆内

代码展示:

结果展示:

 

第七题

步骤:

 * 这是一道几何方面的问题:点是否在三角形内?

 * 假设一个直角三角形放在一个平面上。直角点在(0, 0)处,     

   其它两个点分别在(200, 0)和(0, 100)处。

 * 提示用户输入一个点x坐标和y坐标:

 * 判断这个点是否在该三角形内。

代码展示:

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

结果展示:

今天的题有点多,但是都是很简单的,剩下的题,明天整理完会发上来!!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值