第三章典型习题集

3.1(代数解一元二次方程可 以 使 用 下 面 的 公 式 求 一 元 二 次 方 程 的 两 个 根:

b*b-4*a*c  称作一元二次方程的判别式如果它是正值那么一元二次方程就有两个实数根果它为0, 方程式就只有一个根如果它是负值方程式无实根编写程序提示用户输入a,b,c的值,并且显示基于判别式的结果如果这个判别式为显示两个根如果判别式为 0, 显示一个根否则显示 The equation has no real roots方程式无实数根

注意可以使用 Math.pow(x,0.5)来计算

提示用用户输入,计算判别式的大小正负,然后根据判别式的的大小,和根的计算公式去计算方程的解

/*
数据: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  Ds3_01{
    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("无实数解!");
        }
    }
}

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

运行事例:

import java.util.Scanner;
public class Ds3_03{
    public static void main(String[] srgs){
        //提示输入
        Scanner scanner = new Scanner(System.in);
        System.out.print("今天是周几:");
        int today = scanner.nextInt();

        System.out.print("未来的几天:");
        int future = scanner.nextInt();
        //计算未来几天后是周几
        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);

    }
}

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

import java.util.Scanner;
public class Ds3_04{
    public static void main(String[] args){
        //请输入一个数字
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int num = scanner.nextInt();
        int temp = num;
        //拼接出该数字的反序
        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("该数字不是回文数字!");
        }
    }
}

 

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

import java.util.Scanner;
import java.util.Random;
class Ds3_06{
    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);
        }
    }
}            

(科学某天是星期几泽勒一致性是由克里斯汀 泽勒开发的用于计算某天是星期几的算法这个公式是

 

其中h 是一个星期中的某一天0 为星期六1 为星期天2 为星期一3 为星期二4 为星期三5 为星期四6 为星期五q 是某月的第几天。 m 是月份3 为三月4 为四月...2 为十二月一月和二月分别记为上一年的 13 和14

j 是世纪数即year/100)k 是 该 世 纪 的 第 几 年. 

注意公式中的除法执行一个整数相除编写程序,提示用户输入年月和该月的哪一天然后显示它是一周中的星期几

下面是一些运行示例

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),然后检査这个点是否在以原 0, 0) 为圆心半径为 10 的圆内例如4, 5)是圆内的一点9, 9) 是圆外的一点.

〆提示如果一个点到0, 0) 的距离小于或等于10, 那么该点就在圆计算距离的公式是 :

 

import java.util.Scanner;
class Ds3_08{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        //提示用户输入坐标
        System.out.print("请输入一个坐标点:");
        double x = scanner.nextDouble();
        double y = scanner.nextDouble();
        //定义坐标点
        double xo=0;
        double yo=0;
        double radius=10;
        //计算圆心到坐标点的距离
        double distance=Math.pow(Math.pow(x-xo, 2)+Math.pow(y-yo, 2),0.5);

        if(distance>radius){
            System.out.println("坐标点在圆外");
        }else if(radius==distance){
            System.out.println("坐标点在圆上");
        }else{
            System.out.println("坐标点在圆内");
        }
    }
}

(几何两个矩形编写一个程序,提示用户输入两个矩形中点的 x 坐标和:v 坐标以及它们的宽 度和高度然后判定第二个矩形是在第一个矩形内还是和第一个矩形重叠如图 3-9 所示

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;//导包

public class Ds3_12{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        //提示输入两个数字
        System.out.print("请输入两个数字:");
        //分别定义两个整型变量
        int n1 = scanner.nextInt();
        int n2 = scanner.nextInt();
        //gcd表示公约数
        int gcd = 1;//  1是每个数字的最小公约数
        for(int i=n1<n2?n1:n2;i>=1;i--){//i=n1<n2?n1:n2这个是三目运算,n1是否小于n2小于的话就为n1
            if(n1%i==0&&n2%i==0){
                gcd = i;
                break;
            }
        }
        System.out.println("两个数字的最大公约数是:"+gcd);
    }
}

/*
 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();
        }
    }
}
发布了12 篇原创文章 · 获赞 0 · 访问量 82

猜你喜欢

转载自blog.csdn.net/fuguofenA/article/details/104325935