java語言程式設計基礎篇第六章程式設計練習題
阿新 • • 發佈:2019-01-09
1 import java.util.Scanner; public class Main{ public static void main(String[] args){ final int NUMBER = 100; int count = 0; Scanner input = new Scanner(System.in); while(count < NUMBER){ System.out.print(getPentagonalNumber(count+1) + " "); if((count+1) % 10 == 0) System.out.println(); ++count; } } public static int getPentagonalNumber(int n){ return n*(3*n-1)/2; } } 2 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner input = new Scanner(System.in); int n = input.nextInt(); System.out.println(sumDigits(n)); } public static int sumDigits(int n){ int sum = 0; while(n != 0){ sum += n % 10; n = n / 10; } return sum; } }
3 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner input = new Scanner(System.in); int num = input.nextInt(); if(isPalindrome(num)) System.out.println(num + " is palindrome."); else System.out.println(num + " is not palindrome."); } public static int reverse(int number){ int num = 0; while(number != 0){ num = num*10 + number%10; number /= 10; } return num; } public static boolean isPalindrome(int number){ if(number == reverse(number)) return true; return false; } } 4 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner input = new Scanner(System.in); int num = input.nextInt(); System.out.println(reverse(num)); } public static int reverse(int number){ int num = 0; while(number != 0){ num = num*10 + number%10; number /= 10; } return num; } } 5 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner input = new Scanner(System.in); double num1 = input.nextDouble(); double num2 = input.nextDouble(); double num3 = input.nextDouble(); displaySortedNumber(num1,num2,num3); } public static void displaySortedNumber(double num1, double num2, double num3){ double temp = 0; if(num1 > num2){ temp = num1; num1 = num2; num2 = temp; } if(num1 > num3){ temp = num1; num1 = num3; num3 = temp; } if(num2 > num3){ temp = num2; num2 = num3; num3 = temp; } System.out.println(num1 + " " + num2 + " " + num3); } } 6 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner input = new Scanner(System.in); int num = input.nextInt(); displayPattern(num); } public static void displayPattern(int n){ for(int i = 1; i <= n; ++i){ for(int j = 1; j <= n-i; ++j) System.out.print(" "); for(int j = i; j > 0; --j) System.out.print(j); System.out.println(); } } } 7,8,9 套公式 10 import java.util.Scanner; public class Main{ public static void main(String[] args){ int count = 0; for(int i = 1; i <= 10000; ++i){ if(isPrime(i)) ++count; } System.out.println(count); } public static boolean isPrime(int n){ if(n == 1) return false; for(int i = 2; i*i <= n; ++i){ if(n%i == 0) return false; } return true; } } 11 。。。。 12 import java.util.Scanner; public class Main{ public static void main(String[] args){ printChars('1','Z',10); } public static void printChars(char ch1, char ch2, int numberPerLine){ int count = 0; for(int i = ch1; i <= ch2; ++i){ System.out.print((char)i); ++count; if(count%10 == 0) System.out.println(); } } } 13 import java.util.Scanner; public class Main{ public static void main(String[] args){ for(int i = 1; i <= 20; ++i){ System.out.println(i + " " + m(i)); } } public static double m(int n){ double sum = 0.0; for(int i = 1; i <= n; ++i) sum += (double)i/(double)(i+1); return sum; } } 14 import java.util.Scanner; public class Main{ public static void main(String[] args){ for(int i = 1; i <= 901; i += 100){ System.out.println(i + " " + m(i)); } } public static double m(int n){ double sum = 0.0; int one = 1; for(int i = 1; i <= n; ++i){ sum += one/(double)(2*i-1); one = -one; } return 4*sum; } } 15,16 。。。。。。。 17 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner input = new Scanner(System.in); int n = input.nextInt(); printMatrix(n); } public static void printMatrix(int n){ for(int i = 0; i < n; ++i){ for(int j = 0; j < n; ++j){ System.out.print((System.currentTimeMillis()/(j+i+1))%2 + " "); } System.out.println(); } } } 18 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.print("Enter password:"); String password = input.next(); if(isValidPassWord(password)){ System.out.println("Valid Password"); } else System.out.println("Invalid Password"); } public static boolean isValidPassWord(String str){ if(str.length() < 8) return false; int count = 0; for(int i = 0; i < str.length(); ++i){ if(!Character.isDigit(str.charAt(i)) && !Character.isLetter(str.charAt(i))) return false; if(Character.isDigit(str.charAt(i))) ++count; } if(count < 2) return false; return true; } } 19,20,21 。。。。。。 22 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner input = new Scanner(System.in); double n = input.nextDouble(); System.out.println(sqrt(n)); } public static double sqrt(double n){ double nextGuess = 0; double lastGuess = 1.0; while(true){ nextGuess = (lastGuess + n/lastGuess) / 2; if(Math.abs(nextGuess - lastGuess) < 0.0001) return nextGuess; lastGuess = nextGuess; } } } 23 。。。。。 24 參考第五章29題 25 貌似和程式清單2-7差不多 26 import java.util.Scanner; public class Main{ public static void main(String[] args){ int count = 0; int i = 1; while(count < 100){ if(isPrime(i) && isPalindrome(i)){ System.out.print(i + " "); ++count; if(count % 10 == 0) System.out.println(); } ++i; } } public static boolean isPalindrome(int number){ if(number == reverse(number)) return true; return false; } public static int reverse(int number){ int num = 0; while(number != 0){ num = num*10 + number%10; number /= 10; } return num; } public static boolean isPrime(int n){ if(n == 1) return false; for(int i = 2; i*i <= n; ++i){ if(n%i == 0) return false; } return true; } } 27 import java.util.Scanner; public class Main{ public static void main(String[] args){ int count = 0; int i = 1; while(count < 100){ if(isPrime(i) && isPrime(reverse(i))){ System.out.print(i + " "); ++count; if(count % 10 == 0) System.out.println(); } ++i; } } public static int reverse(int number){ int num = 0; while(number != 0){ num = num*10 + number%10; number /= 10; } return num; } public static boolean isPrime(int n){ if(n == 1) return false; for(int i = 2; i*i <= n; ++i){ if(n%i == 0) return false; } return true; } } 28 import java.util.Scanner; public class Main{ public static void main(String[] args){ for(int p = 1; p <= 31; ++p){ int n = (int)Math.pow(2, p)-1; if(isPrime(n)) System.out.println(p + " " + n); } } public static boolean isPrime(int n){ if(n == 1) return false; for(int i = 2; i*i <= n; ++i){ if(n%i == 0) return false; } return true; } } 29 import java.util.Scanner; public class Main{ public static void main(String[] args){ int record = 2; for(int i = 3; i <= 1000; ++i){ if(isPrime(i)){ if(i - record == 2){ System.out.println("(" + record + ", " + i + ")"); record = i; } else if(i - record < 2 && !isPrime(i+1)) record = i; else if(i - record > 2) record = i; } } } public static boolean isPrime(int n){ if(n == 1) return false; for(int i = 2; i*i <= n; ++i){ if(n%i == 0) return false; } return true; } } 30 。。。。。。 31 import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner cin = new Scanner(System.in); long num = cin.nextLong(); int size = getSize(num); boolean flag = false; if(prefixMatched(num,4) || prefixMatched(num,5) || prefixMatched(num,37) || prefixMatched(num,6)) flag = true; if(size >= 13 && size <= 16 && flag && isValid(num)){ System.out.println(num + " is valid"); } else{ System.out.println(num + " is invalid"); } } public static boolean isValid(long number){ int sum1 = sumOfDoubleEvenPlace(number); int sum2 = sumOfOddPlace(number); int sum = sum1+sum2; if(sum%10 == 0) return true; else return false; } public static int sumOfDoubleEvenPlace(long number){ int len = 0; int sum = 0; int[] numarr = new int[20]; int index = 0; while(number != 0){ numarr[index++] = (int)(number%10); number /= 10; } for(int i = index-1; i >= 0; --i){ ++len; if(len%2 == 1){ sum += getDigit(numarr[i]*2); } } return sum; } public static int getDigit(int number){ if(number < 10) return number; return (number%10 + number/10); } public static int sumOfOddPlace(long number){ int len = 0; int sum = 0; int[] numarr = new int[20]; int index = 0; while(number != 0){ numarr[index++] = (int)(number%10); number /= 10; } for(int i = index-1; i >= 0; --i){ ++len; if(len%2 == 0){ sum += numarr[i]; } } return sum; } public static boolean prefixMatched(long number, int d){ String str = String.valueOf(number); String substr = String.valueOf(d); if(str.startsWith(substr)) return true; return false; } public static int getSize(long d){ int len = 0; while(d != 0){ d /= 10; ++len; } return len; } //感覺題目用不到這個方法啊 public static long getPrefix(long number, int k){ return 0; } }
待續。。。。。