Java语言程序设计(基础篇)原书第十版 课后习题 第三章

// 自己练习的

// 第三章课后题基本完成,除了一些需要改编的没写(太懒了),而且题目难度不是很大。唉,人就是喜欢给自己的懒惰找借口。
// 题目基本是独立完成,除3.27,3.28参考了第八版课后习题外。
// 拖的时间太长了,晚上时间利用低效,不专注
// 2015/10/9 夜

import java.util.Scanner;
public class Code_Practice_3 {

public static void main(String[] args) {
    // 3.1

    Scanner input = new Scanner(System.in);
    System.out.print("Enter a, b, c:");
    double a = input.nextDouble();
    double b = input.nextDouble();
    double c = input.nextDouble();

    double discriminant = (b * b) - (4 * a * c);

    if (discriminant > 0) {
        double r1 = (-b + Math.pow(discriminant, 0.5)) / (2 * a);
        double r2 = (-b - Math.pow(discriminant, 0.5)) / (2 * a);
        System.out.println("The equation has two roots " + r1 + " and " + r2);
    }

    else if (discriminant == 0){
        double r1 = (-b + Math.pow(discriminant, 0.5)) / (2 * a);
        System.out.println("The equation has one root " + r1);
    }

    else
        System.out.println("The equation has no real roots");

    // 3.4

    int number = (int)(Math.random() * 12) + 1;

    switch (number) {
        case 1: System.out.println("January"); break;
        case 2: System.out.println("February "); break;
        case 3: System.out.println("March"); break;
        case 4: System.out.println("April"); break;
        case 5: System.out.println("May"); break;
        case 6: System.out.println("June"); break;
        case 7: System.out.println("July"); break;
        case 8: System.out.println("August"); break;
        case 9: System.out.println("September"); break;
        case 10: System.out.println("October"); break;
        case 11: System.out.println("November"); break;
        case 12: System.out.println("December");
    }

    // 3.5

    Scanner input = new Scanner(System.in);

    System.out.print("Enter today's day:");
    int today = input.nextInt();
    System.out.print("Enter the number of elpased since today:");
    int elpased = input.nextInt();

    switch (today) {
        case 0: System.out.print("Today is Sunday"); break;
        case 1: System.out.print("Today is Monday"); break;
        case 2: System.out.print("Today is Tuesday"); break;
        case 3: System.out.print("Today is Wednesday"); break;
        case 4: System.out.print("Today is Thursday"); break;
        case 5: System.out.print("Today is Friday"); break;
        case 6: System.out.print("Today is Saturday");

    }

    int next = (today + elpased) % 7;
    switch (next) {
        case 0: System.out.println(" and the future day is Sunday"); break;
        case 1: System.out.println(" and the future day is Monday"); break;
        case 2: System.out.println(" and the future day is Tuesday"); break;
        case 3: System.out.println(" and the future day is Wednesday"); break;
        case 4: System.out.println(" and the future day is Thursday"); break;
        case 5: System.out.println(" and the future day is Friday"); break;
        case 6: System.out.println(" and the future day is Saturday");

}

    // 3.8

    Scanner input = new Scanner(System.in);

    System.out.print("Enter three integers:");
    int num1 = input.nextInt();
    int num2 = input.nextInt();
    int num3 = input.nextInt();

    if (num1 > num2) {
        int temp = num1;
        num1 = num2;
        num2 = temp;
    }

    if (num2 > num3) {
        int temp = num2;
        num2 = num3;
        num3 = temp;
    }

    if (num1 > num2) {
        int temp = num1;
        num1 = num2;
        num2 = temp;
    }

    System.out.println(num1 + " " + num2 + " " + num3);

    // 3.9

    Scanner input =  new Scanner(System.in);
    System.out.print("Enter the first 9 digits of an ISBN as integer:");

    int integer = input.nextInt();

    int d1 = integer / 100000000;

// System.out.println(d1); test
int d2 = integer / 10000000 % 10;
int d3 = integer / 1000000 % 10;
int d4 = integer / 100000 % 10;
int d5 = integer / 10000 % 10;
int d6 = integer / 1000 % 10;
int d7 = integer / 100 % 10;
int d8 = integer / 10 % 10;
int d9 = integer % 10;

    int check = (d1 * 1 + d2 * 2 + d3 * 3 + d4 * 4 +
        d5 * 5 + d6 * 6 + d7 * 7 + d8 * 8 + d9 * 9) % 11;
    if (check == 10)
        System.out.println(d1 + "" + d2 + "" + d3 + "" + d4 + "" + d5 +
            "" + d6 + "" + d7 + "" + d8 + "" + d9 + "" + "X");
    else
        System.out.println(d1 + "" + d2 + "" + d3 + "" + d4 + "" + d5 +
            "" + d6 + "" + d7 + "" + d8 + "" + d9 + "" + check);
// 3.11

Scanner input = new Scanner(System.in);

System.out.print("Enter a month and a year:");
int month = input.nextInt();
int year = input.nextInt();


if ((year % 4 == 0 && year % 100 != 0 ) || (year % 400 == 0)) {
    switch(month) {
        case 1:System.out.println("Jan. has 31 days."); break;
        case 2:System.out.println("Feb. has 29 days."); break;
        case 3:System.out.println("Mar. has 31 days."); break;
        case 4:System.out.println("Apr. has 30 days."); break;
        case 5:System.out.println("May has 31 days."); break;
        case 6:System.out.println("Jun. has 30 days."); break;
        case 7:System.out.println("Jul. has 31 days."); break;
        case 8:System.out.println("Aug. has 31 days."); break;
        case 9:System.out.println("Sep. has 30 days."); break;
        case 10:System.out.println("Oct. has 31 days."); break;
        case 11:System.out.println("Nov. has 30 days."); break;
        case 12:System.out.println("Dec. has 31 days.");
        }

    }

    else {
        switch(month) {
        case 1:System.out.println("Jan. has 31 days."); break;
        case 2:System.out.println("Feb. has 28 days."); break;
        case 3:System.out.println("Mar. has 31 days."); break;
        case 4:System.out.println("Apr. has 30 days."); break;
        case 5:System.out.println("May has 31 days."); break;
        case 6:System.out.println("Jun. has 30 days."); break;
        case 7:System.out.println("Jul. has 31 days."); break;
        case 8:System.out.println("Aug. has 31 days."); break;
        case 9:System.out.println("Sep. has 30 days."); break;
        case 10:System.out.println("Oct. has 31 days."); break;
        case 11:System.out.println("Nov. has 30 days."); break;
        case 12:System.out.println("Dec. has 31 days.");
        }

    }

// 3.12
Scanner input = new Scanner(System.in);

System.out.print("Enter a three-digit integer:");
int integer = input.nextInt();

    if ((integer / 100) == (integer % 10))
        System.out.println(integer + " is a palindrome");
    else
        System.out.println(integer + " is not a palindrome");

// 3.14

    Scanner input = new Scanner(System.in);

    System.out.print("Enter 0 or 1, 0 stand for head, 1 stand for tail:");
    int guess = input.nextInt();

    int coin = (int)(Math.random() * 2);

    if (guess == coin)
        System.out.println("Your guess is correct, the coin is " + coin);
    else
        System.out.println("Your guess is incorrect, the coin is " + coin);

    // 3.15

    int lottery = (int)(100 + Math.random() * 900);

    Scanner input = new Scanner(System.in);
    System.out.print("Enter your lottery pick (three digits):");
    int guess = input.nextInt();

    int lotteryDigit1 = lottery / 100;
    int lotteryDigit2 = lottery / 10 % 10;
    int lotteryDigit3 = lottery % 10;

    int guessDigit1 = guess / 100;
    int guessDigit2 = guess / 10 % 10;
    int guessDigit3 = guess % 10;

    System.out.println("The lottery number is " + lottery);

    if (guess == lottery)
        System.out.println("Exact match: you win $10,000");
    else if ((lotteryDigit1 == guessDigit1 && lotteryDigit2 == guessDigit3 && lotteryDigit3 == guessDigit2)
            || (lotteryDigit1 == guessDigit3 && lotteryDigit2 == guessDigit2 && lotteryDigit3 == guessDigit1)
            || (lotteryDigit1 == guessDigit2 && lotteryDigit2 == guessDigit3 && lotteryDigit3 == guessDigit1)
            || (lotteryDigit1 == guessDigit3 && lotteryDigit2 == guessDigit1 && lotteryDigit3 == guessDigit3)
            || (lotteryDigit1 == guessDigit2 && lotteryDigit2 == guessDigit1 && lotteryDigit3 == guessDigit2))
        System.out.println("Match all digits: you win $3,000");
    else if (guessDigit1 == lotteryDigit1
            || guessDigit1 == lotteryDigit2
            || guessDigit1 == lotteryDigit3
            || guessDigit2 == lotteryDigit1
            || guessDigit2 == lotteryDigit2
            || guessDigit2 == lotteryDigit3
            || guessDigit3 == lotteryDigit1
            || guessDigit3 == lotteryDigit2
            || guessDigit3 == lotteryDigit3)
        System.out.println("Match one digit: you win $1,000");
    else
        System.out.println("Sorry,no match");

    // 3.16

    int lengthDot = (int)(Math.random() * 100);
    int heightDot = (int)(Math.random() * 200);

    System.out.println("The coordinate is " + "(" + 
        lengthDot + "," + heightDot + ")");

    // 3.17

    Scanner input = new Scanner(System.in);

    System.out.print("scissor (0), rock(1), paper(2):");
    int numByUser = input.nextInt();

    int numByCom = (int)(Math.random() * 3);
    if (numByUser == numByCom){
        switch(numByUser) {
        case 0:System.out.println("The computer is scissor. You are scissor too.It is draw."); break;
        case 1:System.out.println("The computer is rock. You are rock too.It is draw."); break;
        case 2:System.out.println("The computer is paper. You are paper too.It is draw."); break;
        }
    }
    else if ((numByUser == 0 && numByCom == 2)
            || (numByUser == 1 && numByCom == 0)
            || (numByUser == 2 && numByCom == 1)){
        switch(numByUser) {
        case 0:System.out.println("The computer is paper. You are scissor.You win!"); break;
        case 1:System.out.println("The computer is scissor. You are rock.You win!"); break;
        case 2:System.out.println("The computer is rock. You are paper.You win!"); break;
        }
    }
    else if ((numByUser == 0 && numByCom == 1)
            || (numByUser == 1 && numByCom == 2)
            || (numByUser == 2 && numByCom == 0)
            ){
        switch(numByUser) {
        case 0:System.out.println("The computer is rock. You are scissor.You lose!"); break;
        case 1:System.out.println("The computer is paper. You are rock.You lose!"); break;
        case 2:System.out.println("The computer is scissor. You are paper.You lose!"); break;
        }
    }

// 3.18

    Scanner input = new Scanner(System.in);

    System.out.print("Enter the weight of package:");
    int weight = input.nextInt();

    if (weight > 0 && weight <= 1)
        System.out.println("The cost is 3.5");
    else if (weight > 1 && weight <= 3)
        System.out.println("The cost is 5.5");
    else if (weight > 3 && weight <= 10)
        System.out.println("The cost is 8.5");
    else if (weight > 10 && weight <= 20)
        System.out.println("The cost is 10.5");
    else
        System.out.println("The package cannot be shipped");


    // 3.19

    Scanner input = new Scanner(System.in);

    System.out.print("Enter three sides:");
    int side1 = input.nextInt();
    int side2 = input.nextInt();
    int side3 = input.nextInt();

    if ((side1 + side2 > side3) && (side1 + side3 > side2)
        && (side2 + side3 > side1))
        System.out.println("The circle is " + (side1 + side2 + side3));
    else
        System.out.println("The side is not legal.");

    // 3.21 

    Scanner input = new Scanner(System.in);

    System.out.print("Enter year: (e.g., 2012):");
    int year = input.nextInt();
    System.out.print("Enter month:");
    int month = input.nextInt();
    System.out.print("Enter the day of the month:");
    int day = input.nextInt();
    int week = 0;

    if (month == 1) {
        month = 13;
        year -= 1;
        week = (day + 26 * (month + 1) / 10 + (year % 100) +
                (year % 100) / 4 + (year / 100) / 4 + (year / 100) * 5) % 7;
    }
    else if (month == 2) {
        month = 14;
        year -= 1;
        week = (day + 26 * (month + 1) / 10 + (year % 100) +
                (year % 100) / 4 + (year / 100) / 4 + (year / 100) * 5) % 7;
    }
    else
        week = (day + 26 * (month + 1) / 10 + (year % 100) +
                (year % 100) / 4 + (year / 100) / 4 + (year / 100) * 5) % 7;

    switch(week) {
        case 0:System.out.println("Day of week is Saturday"); break;
        case 1:System.out.println("Day of week is Sunday"); break;
        case 2:System.out.println("Day of week is Monday"); break;
        case 3:System.out.println("Day of week is Tuesday"); break;
        case 4:System.out.println("Day of week is Wednesday"); break;
        case 5:System.out.println("Day of week is Thursday"); break;
        case 6:System.out.println("Day of week is Friday"); break;

    }

    // 3.22

    Scanner input = new Scanner(System.in);

    System.out.print("Enter a point with two coordinates:");
    int point1 = input.nextInt();
    int point2 = input.nextInt();

    double sum = point1 * point1 + point2 * point2;
    if (Math.pow(sum, 0.5) < 10)
        System.out.println("Point (" + point1 + ", " + point2 +
                ") is in the circle");
    else
        System.out.println("Point (" + point1 + ", " + point2 +
                ") is not in the circle");

    // 3.23

    Scanner input = new Scanner(System.in);

    System.out.print("Enter a point with two coordinates:");
    double point1 = input.nextDouble();
    double point2 = input.nextDouble();

    if (point1 <= 5 && point2 <= 2.5)
        System.out.println("Point (" + point1 + ", " + point2 +
                ") is in the rectangle");
    else
        System.out.println("Point (" + point1 + ", " + point2 +
                ") is not in the rectangle");


    // 3.24

    int num = (int)(1 + Math.random() * 13);
    switch(num) {
        case 1:System.out.print("The card of you picked is Ace "); break;
        case 2:System.out.print("The card of you picked is 2 "); break;
        case 3:System.out.print("The card of you picked is 3 "); break;
        case 4:System.out.print("The card of you picked is 4 "); break;
        case 5:System.out.print("The card of you picked is 5 "); break;
        case 6:System.out.print("The card of you picked is 6 "); break;
        case 7:System.out.print("The card of you picked is 7 "); break;
        case 8:System.out.print("The card of you picked is 8 "); break;
        case 9:System.out.print("The card of you picked is 9 "); break;
        case 10:System.out.print("The card of you picked is 10 "); break;
        case 11:System.out.print("The card of you picked is Jack "); break;
        case 12:System.out.print("The card of you picked is Queen "); break;
        case 13:System.out.print("The card of you picked is King "); break;
    }

    int color = (int)(1 + Math.random() * 4);
    switch(color) {
        case 1:System.out.println("of Hearts"); break;
        case 2:System.out.println("of Diamonds"); break;
        case 3:System.out.println("of Spades"); break;
        case 4:System.out.println("of Clubs"); break;
    }

    // 3.26

    Scanner input  = new Scanner(System.in);

    System.out.print("Enter an integer:");
    int integer = input.nextInt();
    boolean div1 = (integer % 5 == 0) && (integer % 6 == 0);
    boolean div2 = (integer % 5 == 0) || (integer % 6 == 0);
    boolean div3 = (integer % 5 == 0) ^ (integer % 6 == 0);

    System.out.println("Is " + integer + " divisible by 5 and 6? " + div1);
    System.out.println("Is " + integer + " divisible by 5 or 6? " + div2);
    System.out.println("Is " + integer + " divisible by 5 or 6, but not both? " + div3);*/

    // 3.27

    Scanner input = new Scanner(System.in);

    System.out.print("Enter a point's x- and y-coordinates: ");
    double x = input.nextDouble();
    double y = input.nextDouble();

    if (x > 200 || x < 0 || y > 100 || y < 0)
      System.out.println("The point is not in the triangle");
    else {
      double slope = (200.0 - 0) / (0 - 100.0);
      double x1 = x + -y * slope;
      if (x1 <= 200)
        System.out.println("The point is in the triangle");
      else
        System.out.println("The point is not in the triangle");
    }

// 3.28

    Scanner input =  new Scanner(System.in);

    System.out.print("Enter r1's center x-, y-coordinates, width, and height: ");
    double x1 = input.nextDouble();
    double y1 = input.nextDouble();
    double w1 = input.nextDouble();
    double h1 = input.nextDouble();

    System.out.print("Enter r2's center x-, y-coordinates, width, and height: ");
    double x2 = input.nextDouble();
    double y2 = input.nextDouble();
    double w2 = input.nextDouble();
    double h2 = input.nextDouble();

    double xDistance = x1 - x2 >= 0 ? x1 - x2 : x2 - x1;
    double yDistance = y1 - y2 >= 0 ? y1 - y2 : y2 - y1;

    if (xDistance <= (w1 - w2) / 2 && yDistance <= (h1 - h2) / 2)
        System.out.println("r2 is inside r1");
    else if (xDistance <= (w1 + w2) / 2 && yDistance <= (h1 + h2) / 2)
        System.out.println("r2 overlaps r1");
    else
        System.out.println("r2 does not overlap r1");

// 3.29
Scanner input = new Scanner(System.in);

    System.out.print("Enter circle1's center x-, y-coordinates, and radius:");
    double x1 = input.nextDouble();
    double y1 = input.nextDouble();
    double r1 = input.nextDouble();

    System.out.print("Enter circle2's center x-, y-coordinates, and radius:");
    double x2 = input.nextDouble();
    double y2 = input.nextDouble();
    double r2 = input.nextDouble();

    double temp = Math.pow((x1 - x2), 2) + Math.pow((y2 - y1), 2);
    double distance = Math.pow(temp, 0.5);

    if (distance <= Math.abs(r1 - r2))
        System.out.println("circle2 is inside circle1");
    else if (distance <= (r1 + r2))
        System.out.println("circle2 overlaps circle1");
    else
        System.out.println("circle2 does not overlap circle1");

// 3.31

Scanner input = new Scanner(System.in);

    System.out.print("Enter teh exchange rate from dollars to RMB:");
    double rate = input.nextDouble();
    System.out.print("Enter 0 to convert dollars to RMB and 1 vice versa:");
    int choice = input.nextInt();

    if (choice == 0) {
        System.out.print("Enter the dollars amount:");
        double dollar = input.nextDouble();
        double rmb = dollar * rate;
        System.out.println("$" + dollar + " is " + rmb + " yuan");
    }
    else if (choice == 1) {
        System.out.print("Enter the RMB amount:");
        double rmb = input.nextDouble();
        double dollar = (int)(rmb / rate * 100) / 100.0;
        System.out.println(rmb + " yuan is " + "$" + dollar);
    }
    else 
        System.out.println("Enter a correct number");

// 3.32

Scanner input = new Scanner(System.in);

    System.out.print("Enter three points for p0, p1 and p2:");
    double x0 = input.nextDouble();
    double y0 = input.nextDouble();
    double x1 = input.nextDouble();
    double y1 = input.nextDouble();
    double x2 = input.nextDouble();
    double y2 = input.nextDouble();

    double result = (x1-x0) * (y2 - y0) - (x2 - x0) * (y1 - y0);
    System.out.print("(" + x2 + ", " + y2 + ")" + 
            " is on the ");
    if (result > 0) 
        System.out.println("left side of the line from (" +
            x0 + ", " + y0 + ") to (" + x1 + ", " + y1 + ")");
    else if (result == 0)
        System.out.println("line from (" +
            x0 + ", " + y0 + ") to (" + x1 + ", " + y1 + ")");
    else
        System.out.println("right side of the line from (" +
                x0 + ", " + y0 + ") to (" + x1 + ", " + y1 + ")");

// 3.33

Scanner input = new Scanner(System.in);

    System.out.print("Enter weight and price for package1:");
    double w1 = input.nextDouble();
    double p1 = input.nextDouble();

    System.out.print("Enter weight and price for package2:");
    double w2 = input.nextDouble();
    double p2 = input.nextDouble();

    double amount1 = w1 * p1;
    double amount2 = w2 * p2;

    if (amount1 > amount2)
        System.out.println("Package 2 has a better price.");
    else if (amount2 > amount1)
        System.out.println("Package 1 has a better price.");
    else 
        System.out.println("Two packages have the same price.");    

}
}

猜你喜欢

转载自blog.csdn.net/zjjoebloggs/article/details/48937161