Java习题总结 - 03_1

Java习题总结 - 课内习题总结

 

 

第一题

可以使用下面的公式求一元二次方程:

                                                              \textbf{r1}=\frac{-b+\sqrt{b^2-4ac}}{2\textup{a}}\textbf{r2}=\frac{-b+\sqrt{b^2-4ac}}{2\textup{a}}

b^2-4ac称作一元二次方程的判别式。如果它是正值,那么一元二次方程就有两个实数根。如 果它为0, 方程式就只有一个根。如果它是负值,方程式无实根。

编写程序,提示用户输入 a,b 和c的值,并且显示基于判别式的结果。如果这个判别式为正,显示两个根。如果判别式为 0, 显示一个根。否则,显示 “该 方程式无实数根”。 

面是一些运行示例:

Enter a, b, c:1.0 3 1 
The equation has two roots -0.381966 and -2.61803 

Enter a, b, c:1 2.0 1 
The equation has one root -1 

Enter a, b, c:1 2 3
The equation has no real roots

解题思路:

题中的数据——一元二次方程的系数

题目要求——根据公式求方程的解,并根据不同的情况,给出合适的输出

步骤:

1.输入方程的系数

2.计算根的判别式

3.判断方程有几个解

4.有几个解就输出几个解

代码:

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

 

第二题

编写一个程序,提示用户输入代表今天日期的数字(周天 为 0, 周一为 1,……, 周六为 6 )。同时,提示用户输入一个今天之后的天数,作为代表将来某天的数字,然后显示这 天是星期几。

下面是运行示例:

Enter today is day:1 
Enter the number of days elapsed since today: 3 
Today is Monday and the future day is Thursday


Enter today is day: 0 
Enter the number of days elapsed since today: 31 
Today is Sunday and the future day is Wednesday

解题思路:

题中的数据——今天日期的数字,将来某天的数字

题目要求——根据输入求将来某天是星期几

步骤:

1.输入今天是周几

2.输入未来的几天

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

代码:

 

import java.util.Scanner;
class Test03
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        System.out.print("今天是周几:");//提示用户输入今天的星期
        int today = input.nextInt();//存储今天的星期
        System.out.print("未来的几天:");//提示用户输入未来几天的星期
        int future = input.nextInt();//存储未来的某天
        int futureday= (today + future) % 7;//计算星期的名称
        String day = "天一二三四五六";
        System.out.println("今天是星期" + day.charAt(today) + ",未来的几天是星期" + day.charAt(futureday));
    }
}

 

注:通过string存储星期的名称,再通过string自带的charAt函数,提取其中的字符,可以在不使用if的情况下轻松判断出日期。

charAt函数:str.charAt(n),提取字符串str的第n个字符。(字符串默认从第0个开始)

第三题

编写一个程序,提示用户输入一个三位的整数,然后确定它是否回文数字。当从左到右,以及从右到左都是一样的话,这个数字称为回文数。下面是程序的一个运行示例: 

Enter a three-digit integer: 121 
121 is a palindrome


Enter a three-digit integer: 123 
123 is not a palindrome

解题思路:

题中的数据——用户输入的数字,存储从右往左读的数字

题目要求——判断数字是否是回文数字

步骤:

1.提示用户输入一个三位整数

2.计算该整数的反序数字

3.比较整数与其反序数字的大小

4.根据比较的结果输出该数字是否是回文数字

代码:

import java.util.Scanner;
class Test03
{
    public static void mian(String[] args)
    {
        Scanner scanner=new Scanner(System.in);
        System.out.print("输入一个三位的整数:");
        int n = input.nextInt(), t = 0;
        for(int i = n; i > 0;)
        {
            t = t * 10 + i % 10;
            i /= 10;
        }
        if(t == n)
        {
            System.out.println(n + "是回文数字");
        }
        else
        {
            System.out.println(n + "不是回文数字");
        }        
    }
}        

 

第四题

编写可以玩流行的剪刀-石头-布游戏的程序。 (剪刀可以剪布,石头可以砸剪刀,而布可以包石头。 )程序提示用户随机产生一个数,这个数为 0、1或者 2, 分别表 示石头、剪刀和布。程序提示用户输入值 0、1或者 2, 然后显示一条消息,表明用户和计算机谁贏了游戏,谁输了游戏,或是打成平手。

下面是运行示例: 

scissor (0), rock (1), paper (2): 1 
The computer is scissor. You are rock. You won 


scissor (0), rock (1), paper (2): 2 
The computer is paper. You are paper too. It is a draw

解题思路:

题中的数据——电脑随机产生的数字,用户输入的数字

题目要求——计算机随机产生一个整数(0,1,2),判断用户和计算机的输赢

步骤:

1.提示用户输入一个数字
2.计算机随机产生一个数字
3.将两个数字进行对比,分输赢

代码:

import java.util.*;
class Test04
{
    public static void main(String[] args)
    {
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入 剪刀0 石头1 布2:");
        int usr=scanner.nextInt();
        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;
        }
        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);
        }
    }
}

 

第五题

编写程序,提示用户输人一个点(x,y),然后检査这个点是否在以原点(0,0)为圆心、半径为10的圆内。

Java习题总结 - 03_1_第1张图片

例如: (4, 5)是圆内的一点,而(9, 9)是圆外的一点。

提示 :如果一个点到(0,0) 的距离小于或等于10, 那么该点就在圆内,计算距离的公式是^{\sqrt{(x1-x2)^2+(y1-y2)^2}}   。

以下是两个运行示例:

Enter a point with two coordinates: 4 5 
Point (4.0, 5.0) is in the circle


Enter a point with two coordinates: 9 9 
Point (9.0, 9.0) is not in the circle

解题思路:

题中的数据——圆心坐标,半径,用户输入的点坐标

题目要求——判断点是否在圆内

步骤:

1.提示用户输入点的x,y轴坐标

2.计算到圆心的距离

3.判断点是否在圆内

4.输出判断结果

代码:

class Test05
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入x,y轴坐标:");//提示输入x,y轴坐标
        double x = input.nextDouble();//存储x轴坐标
        double y = input.nextDouble();//存储y轴坐标
        double dis = Math.pow(Math.pow(x,2) + Math.pow(y,2),0.5);//计算点到圆心的距离
        if(dis < 10)//判断点与圆的关系
        {
            System.out.println("点在圆内。");
        }
        else if(dis >10)
        {
            System.out.println("点在圆内。");
        }
        else
        {
            System.out.println("点在圆上。");
        }
    }
}

 

你可能感兴趣的:(Java习题整理笔记)