java语言程序设计第五章答案_Java语言程序设计(基础篇)原书第十版 课后习题 第五章...

该篇博客主要展示了Java编程的五个练习题,包括输入整数并计算正负数、随机问题求解、千克与磅的转换、英里与千米的转换、以及多个数学和逻辑运算的示例。通过这些例子,读者可以巩固对Java编程基础的理解和应用。
摘要由CSDN通过智能技术生成

import java.util.Scanner;

public class Code_Practice_5 {

public static void main(String[] args) {

// 5.1

Scanner input = new Scanner(System.in);

System.out.print("Enter an integer, the input ends if it is 0:");

int number = input.nextInt();

int countP = 0, countN = 0;

int total = 0, count = 0;

if (number != 0) {

// 如果写成while(true),会出现Unreachable code的问题,原因没找到

while (number != 0) {

if (number > 0)

countP++;

else

countN++;

total += number;

number = input.nextInt();

}

double average = total / (countP + countN);

System.out.println("The number of positives is " + countP);

System.out.println("The number of negatives is " + countN);

System.out.println("The total is " + total);

System.out.println("The average is " + average);

}

else

System.out.println("No numbers are entered except 0");

// 5.2

final int NUMBER_OF_QUESTIONS = 5; // Number of questions

int correctCount = 0 ; // Count the correct

int count = 0; // Count the questions

long startTime = System.currentTimeMillis();

String output = " "; // output string is initially empty;

Scanner input = new Scanner(System.in);

while (count < NUMBER_OF_QUESTIONS) {

// Generate two random single-digit integers

int num1 = (int)(1 + Math.random() * 14);

int num2 = (int)(1 + Math.random() * 14);

System.out.print(

"What is " + num1 + "+" + num2 + " ? ");

int answer = input.nextInt();

if (num1 + num2 == answer){

System.out.println("You are correct!");

correctCount ++;

}

else

System.out.println("Your answer is wrong.\n" + num1

+ "+" + num2 + " should be " + (num1 + num2));

count ++;

output += "\n" + num1 + "+" + num2 + "=" + answer +

((num1 + num2 == answer) ? " correct" : " wrong");

}

long endTime = System.currentTimeMillis();

long testTime = endTime - startTime;

System.out.println("\nCorrect count is " + correctCount +

"\nTest time is " + testTime / 1000 + " seconds\n" + output);

// 5.3

int kilo = 1;

double pound = 0;

System.out.println("千克" + " " + " 磅");

for (int i = 0; i < 199; i++) {

System.out.print(kilo);

pound = kilo * 2.2;

System.out.printf("%12.1f\n", pound);

kilo++;

}

// 5.4

int miles = 1;

double kilo = 0;

System.out.println("英里" + " " + " 千米");

for (int i = 0; i < 10; i++) {

System.out.printf("%-9d",miles);

kilo = miles * 1.609;

System.out.printf("%-7.3f\n", kilo);

miles++;

}

// 5.5

int kilo1 = 1, pound2 = 20;

double pound1 = 1, kilo2 = 1;

System.out.println("千克" + " " + " 磅" +

" "+"磅" + " " + " 千克");

for (int i = 0; i < 199; i++) {

System.out.print(kilo1);

pound1 = kilo1 * 2.2;

System.out.printf("%12.1f", pound1);

for (int j = 0; j < 99; j++) {

System.out.printf("%6d",pound2);

kilo2 = pound2 / 2.2;

System.out.printf("%8.2f\n",kilo2);

pound2 += 5;

break;

}

kilo1++;

}

// 5.6

int miles1 = 1, kilo2 = 20;

double kilo1 = 0, miles2 = 0;

System.out.println("英里" + " " + " 千米" +

" " + "千米" + " " + " 英里");

for (int i = 0; i < 10; i++) {

System.out.printf("%-9d",miles1);

kilo1 = miles1 * 1.609;

System.out.printf("%-7.3f", kilo1);

for (int j = 0; j < 10; j++) {

System.out.printf("%6d",kilo2);

miles2 = kilo2 / 1.609;

System.out.printf("%13.3f\n",miles2);

kilo2 += 5;

break;

}

miles1++;

}

// 5.7

int tuition = 10000;

int year = 0;

int total = 0;

while (year < 14) {

tuition *= 1.05;

year++;

System.out.println(year + " " +tuition);

while (year > 10) {

total += tuition;

break;

}

}

System.out.println(total);

// 5.8

Scanner input = new Scanner(System.in);

System.out.print("Enter the number of student:");

int num = input.nextInt();

double highestScore = 0, higherScore = 0;

String highestName = "", higherName = "";

for (int count = 0; count < num; count++) {

System.out.print("Enter the " + (count + 1) + " student\'s name:");

String name = input.next();

System.out.print("Enter the " + (count + 1) + " student\'s score:");

double score = input.nextDouble();

if (score > highestScore && score > higherScore) {

highestScore = score;

highestName = name;

}

else if (score < highestScore && score > higherScore){

higherScore = score;

higherName = name;

}

}

System.out.println("The best student is " + highestName +

" and the socre is " + highestScore);

System.out.println("The second student is " + higherName +

" and the socre is " + higherScore);

// 5.9

Scanner input = new Scanner(System.in);

// Prompt the user to enter the number of students

System.out.print("Enter the number of students: ");

int numberOfStudents = input.nextInt();

System.out.print("Enter a student name: ");

String student1 = input.next();

System.out.print("Enter a student score: ");

double score1 = input.nextDouble();

System.out.print("Enter a student name: ");

String student2 = input.next();

System.out.print("Enter a student score: ");

double score2 = input.nextDouble();

// Make sure that student1 is for the highest

// and student2 is for the second highest

if (score1 < score2) {

// Swap

String tempString = student1;

double tempScore = score1;

student1 = student2;

score1 = score2;

student2 = tempString;

score2 = tempScore;

}

for (int i = 0; i < numberOfStudents - 2; i++) {

System.out.print("Enter a student name: ");

String student = input.next();

System.out.print("Enter a student score: ");

double score = input.nextDouble();

if (score > score1) {

student2 = student1; // student1 now is the second highest

score2 = score1;

student1 = student; // new student becomes the highest

score1 = score;

}

else if (score > score2) {

student2 = student; // new student becomes the second highest

score2 = score;

}

}

System.out.println("Top two students:");

System.out.println(student1 + "'s score is " + score1);

System.out.println(student2 + "'s score is " + score2);

// 5.10

int count = 0;

for (int i = 100; i < 1000; i++) {

if (i % 5 == 0 && i % 6 == 0)

System.out.print((++count % 10 != 0) ? i + " " : i + "\n");

}

// 5.11

int count = 1;

for (int i = 100; i < 1000; i++) {

if (i % 5 == 0 ^ i % 6 == 0)

System.out.print((count++ % 10 != 0) ? i + " " : i + "\n");

}

// 5.12

int n = 1;

while (Math.pow(n, 2) <= 12000)

n++;

System.out.println("This number is " + n);

// 5.13

int n = 1;

while (n * n * n < 12000)

n++;

System.out.println("This number is " + (n-1));

// 5.14

Scanner input = new Scanner(System.in);

System.out.print("Enter the first number:");

int num1 = input.nextInt();

System.out.print("Enter the second number:");

int num2 = input.nextInt();

int d = (num1 < num2) ? num1 : num2;

for(; d >= 1; d--) {

if ((num1 % d == 0) && (num2 % d == 0))

break;

}

System.out.println("GCD of " + num1 + " and " + num2 +

" is " + d);

// 5.15

int count = 1;

for (int i = '!'; i < '~'; i++)

System.out.print((count++ % 10 != 0) ? (char)i + " "

: (char)i + "\n");

// 5.16

Scanner input = new Scanner(System.in);

System.out.print("Enter a integer:");

int number = input.nextInt();

int fac = 2; // initialize the factor

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

while (fac <= number) {

if (number % fac == 0) {

number /= fac;

System.out.print(fac + " ");

}

else

fac++;

}

// 5.17

Scanner input = new Scanner(System.in);

// Prompt the user to enter the number of lines

System.out.print("Enter the number of lines: ");

int numberOfLines = input.nextInt();

if (numberOfLines < 1 || numberOfLines > 15) {

System.out.println("You must enter a number from 1 to 15");

System.exit(0);

}

// Print lines

for (int row = 1; row <= numberOfLines; row++) {

for (int column = 1; column <= numberOfLines - row; column++)

System.out.print(" ");

for (int num = row; num >= 1; num--)

System.out.print((num >= 10) ? " " + num : " " + num);

for (int num = 2; num <= row; num++)

System.out.print((num >= 10) ? " " + num : " " + num);

// Start a new line

System.out.println();

}

// 5.20

int count = 1; // count the number of prime

int num = 2; // number from 2 to 1000;

boolean isPrime = true; // the number is prime of not

System.out.println("The number is from 2 to 1000.");

while (num <= 1000){

isPrime = true;

for (int i = 2; i <= num / 2; i++) {

if (num % i == 0) {

isPrime = false;

break;

}

}

if (isPrime)

System.out.print((count++ % 8 != 0) ? num + " " : num + "\n");

num++;

}

// 5.21

Scanner input = new Scanner(System.in);

// Promt enter the amount of loan

System.out.print("Enter loan amount:");

double loanAmount = input.nextDouble();

// Promt enter the year of loan

System.out.print("Enter loan year as a integer:");

int yearOfLoan = input.nextInt();

System.out.print("Interest Rate");

System.out.print("\tMonthly Payment");

System.out.println("\t\tTotal Payment"); // \t take 8 position

for (double annualInterestRate = 5.0; annualInterestRate <= 8.0;

annualInterestRate += 1.0 / 8) {

// Obtain monthly interest rate

double monthlyInterestRate = annualInterestRate / 1200;

// Compute mortgage

double monthlyPayment = loanAmount * monthlyInterestRate /

(1 - (Math.pow(1 / (1 + monthlyInterestRate), yearOfLoan * 12)));

double totalPayment = monthlyPayment * yearOfLoan * 12;

// Display results

System.out.printf("%5.3f%c %20.2f %20.2f\n", annualInterestRate,

'%', monthlyPayment, totalPayment);

}

// 5.23

final int N = 50000;

double backwark = 0, forward = 0;

double sum1 = 0,sum2 = 0;

for (int i = 1; i <= N; i++)

sum1 += 1.0 / i;

for (int i = N; i >= 1; i--)

sum2 += 1.0 / i;

System.out.println("The result of forward computation is " + sum1);

System.out.println("The result of backward computation is " + sum2);

System.out.println("The diffrence between two result is " + (sum1 - sum2));

// 5.24

double sum = 0;

for (int i = 1; i <= 97; i += 2) {

sum += 1.0 * i / (i + 2);

}

System.out.println("The sum is " + sum);

// 5.25

for (int i = 10000; i <= 100000; i += 10000){

double pi = 0;

for (int j = 1; j <= i; j += 2) {

pi += 1.0 / (2 * j - 1) - 1.0 / (2 * j + 1);

}

System.out.println("The pi is " + pi);

}

// 5.26

double e = 1;

double item = 1;

for (int i = 1; i <= 100000; i++) {

item = item / i;

e += item;

if (i == 10000 || i == 20000 || i == 30000 || i == 40000 ||

i == 50000 || i == 60000 || i == 70000 || i == 80000 ||

i == 90000 || i == 100000)

System.out.println("The e is " + e + " for i = " + i);

}

// 5.27

int count = 0;

for (int i = 2001; i <= 2100; i++) {

if (i % 400 == 0 || (i % 4 == 0 && i % 100 != 0))

System.out.print((++count % 10 == 0) ? i + "\n" : i + " ");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值