Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
1,22 MB
Nội dung
25/12/2019 Bài tập java có lời giải - Học lập trình Java - Viettuts V Home Java Servlet JSP Struts2 Hibernate Spring Java Cơ Bản MyBatis Java WS C C++ Python PHP Eclipse VBA Web SQL Bài tập java c Bài tập quản Java String Bài Tập Java Học java core Lập trình hướng đối tượng(OOPs) java Bản Giải phương trình bậc Tính giai thừa Chuyển đổi hệ số Dãy so Fibonacci Java - Liệt kê số nguyên Tìm số thuận Danh sách tập java Lời Giải Bài Tập Java Cơ Tuy Recent Upd Bài tập java có lời giải Các Khái Niệm Java OOPs Misc Java - Tính tổ Bài tập Java có lời giải số nguyên n Java - Phân t Bài cung cấp cho bạn danh sách dạng tập khác để bạn thực hành học java số nguyê Java - Liệt kê Bài tập java chữ số Bài tập java nâng cao Liệt kê n số n Tìm UCLN BCNN Java Liệt kê tất số nguyên tố Java - Liệt kê nhỏ n n Liệt kê n số nguyên tố đầu Java - Tìm ướ tiên số chung nhỏ Liệt kê tất số nguyên tố dương có chữ số Dãy số Fibon Phân tích số nguyên For-Each tron Tính tổng chữ số VietTuts on số nguyên Số thuận nghịch Fibonacci nhỏ n Note: Trước xem lời giải bạn tự làm trước common hóa (phân tách thành nguyên tố phương thức riêng) sử dụng lại Học L 2.960 lư Viết chương trình java tính hàm SLOPE excel Lời Giải Bài Tập Java Cơ Bản Đếm số từ sâu ký tự Số lần xuất từ Thích Trang Bài tập java người bạn thíc Trong phần này, bạn phải nắm kiến thức về: sâu Các mệnh đề if-else, switch-case Sâu s1 chứa sâu s2? Các vòng lặp for, while, do-while Lời Giải Bài Tập Mảng Các từ khóa break continue java Các toán tử java (Array) Trong Java Mảng (array) java Liệt kê phần tử xuất mảng lần File I/O java Liệt kê phần tử xuất Xử lý ngoại lệ java mảng lần Liệt kê số lần xuất phần tử mảng Sắp xếp mảng theo thứ tự tăng dần Sắp xếp mảng theo thứ tự giảm dần Chèn phần tử vào mảng java Bài 01: Viết chương trình tìm tất số chia hết cho bội số 5, nằm đoạn 10 200 (tính 10 200) Các số thu in thành chuỗi dòng, cách dấu phẩy Gợi ý: Trộn mảng java Sử dụng vòng lặp for Lời Giải Bài Tập Java Nâng Cao Code mẫu: Lời giải tập QLSV Xử Lý Ngoại Lệ Các Lớp Lồng Nhau Đa Luồng (Multithreading) Java I/O https://viettuts.vn/bai-tap-java package vn.viettuts.baitap; ? import java.util.ArrayList; import java.util.List; public class Bai01 { public static void main(String[] args) { List list = new ArrayList(); 1/15 25/12/2019 Lập Trình Mạng Với Java Java Date Chuyển Đối Kiểu Dữ Liệu Java Collections Java JDBC Các Tính Năng Mới Trong Java Câu Hỏi Phỏng Vấn Java Bài tập java có lời giải - Học lập trình Java - Viettuts 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 } } for (int i = 10; i < 201; i++) { if ((i % == 0) && (i % != 0)) { list.add(i); } } // hiển thị list hình showList(list); public static void showList(List list) { if (list != null && !list.isEmpty()) { int size = list.size(); for (int i = 0; i < size - 1; i++) { System.out.print(list.get(i) + ", "); } System.out.println(list.get(size - 1)); } } Kết quả: 14, 21, 28, 42, 49, 56, 63, 77, 84, 91, 98, 112, 119, 126, 133, 147, 154, 161, 168, 182, 189, 196 Bài 02: Viết chương trình tính giai thừa số nguyên dương n Với n nhập từ bàn phím Ví dụ, n = kết đầu phải 1*2*3*4*5*6*7*8 = 40320 Gợi ý: Sử dụng đệ quy vịng lặp để tính giai thừa Code mẫu: sử dụng đệ quy 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 package vn.viettuts.baitap; ? import java.util.Scanner; public class GiaiThuaDemo2 { private static Scanner scanner = new Scanner(System.in); /** * main * * @author viettuts.vn * @param args */ public static void main(String[] args) { System.out.print("Nhập số nguyên dương n = "); int n = scanner.nextInt(); System.out.println("Giai thừa " + n + " là: " + tinhGiaithua(n)); } } /** * tinh giai thua * * @author viettuts.vn * @param n: so nguyen duong * @return giai thua cua so n */ public static long tinhGiaithua(int n) { if (n > 0) { return n * tinhGiaithua(n - 1); } else { return 1; } } Kết quả: Nhập số nguyên dương n = Giai thừa là: 40320 https://viettuts.vn/bai-tap-java 2/15 25/12/2019 Bài tập java có lời giải - Học lập trình Java - Viettuts Bài 03: Hãy viết chương trình để tạo map chứa (i, i*i), i số nguyên từ đến n (bao gồm n), n nhập từ bàn phím Sau in map hình Ví dụ: Giả sử số n đầu là: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64} Gợi ý: Sử dụng vòng lặp for để lặp i từ đến n Code mẫu: 10 11 12 13 14 15 16 17 18 19 20 package vn.viettuts.baitap; ? import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Bai03 { private static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { System.out.print("Nhập số nguyên dương n = "); int n = scanner.nextInt(); } } Map map = new HashMap(); for (int i = 1; i < n + 1; i++) { map.put(i, i * i); } System.out.println(map); Kết quả: Nhập số nguyên dương n = 10 {1=1, 2=4, 3=9, 4=16, 5=25, 6=36, 7=49, 8=64, 9=81, 10=100} Bài 04: Viết chương trình giải phương trình bậc 2: ax2 + bx + c = Code mẫu: 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 https://viettuts.vn/bai-tap-java package vn.viettuts.baitap; ? import java.util.Scanner; /** * Giải phương trình bậc * * @author viettuts.vn */ public class PhuongTrinhBac2 { private static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String[] args) { System.out.print("Nhập hệ số bậc 2, a = "); float a = scanner.nextFloat(); System.out.print("Nhập hệ số bậc 1, b = "); float b = scanner.nextFloat(); System.out.print("Nhập số tự do, c = "); float c = scanner.nextFloat(); giaiPTBac2(a, b, c); } /** * Giải phương trình bậc 2: ax2 + bx + c = * * @param a: hệ số bậc * @param b: hệ số bậc * @param c: số hạng tự 3/15 25/12/2019 Bài tập java có lời giải - Học lập trình Java - Viettuts 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 } */ public static void giaiPTBac2(float a, float b, float c) { // kiểm tra hệ số if (a == 0) { if (b == 0) { System.out.println("Phương trình vơ nghiệm!"); } else { System.out.println("Phương trình có nghiệm: " + "x = " + (-c / b)); } return; } // tính delta float delta = b*b - 4*a*c; float x1; float x2; // tính nghiệm if (delta > 0) { x1 = (float) ((-b + Math.sqrt(delta)) / (2*a)); x2 = (float) ((-b - Math.sqrt(delta)) / (2*a)); System.out.println("Phương trình có nghiệm là: " + "x1 = " + x1 + " x2 = " + x2); } else if (delta == 0) { x1 = (-b / (2 * a)); System.out.println("Phương trình có nghiệm kép: " + "x1 = x2 = " + x1); } else { System.out.println("Phương trình vô nghiệm!"); } } Kết quả: Nhập hệ số bậc 2, a = Nhập hệ số bậc 1, b = Nhập số tự do, c = -1 Phương trình có nghiệm là: x1 = 0.5 x2 = -1.0 Bài 05: Viết chương trình chuyển đổi số tự nhiên hệ số 10 thành số hệ số B (1 10) { m = remainder % b; if (m >= 10) { sb.append((char) (CHAR_55 + m)); } else { sb.append(m); } } else { sb.append(remainder % b); } remainder = remainder / b; } return sb.reverse().toString(); Kết quả: Nhập số nguyên dương n = 15 So 15 he co so = 1111 So 15 he co so 16 = F Bài 06: Dãy số Fibonacci định nghĩa sau: F0 = 0, F1 = 1, F2 = 1, Fn = F(n-1) + F(n-2) với n >= Ví dụ: 0, 1, 1, 2, 3, 5, 8, Hãy viết chương trình tìm n số Fibonacci Code mẫu: 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 https://viettuts.vn/bai-tap-java package vn.viettuts.baitap; ? import java.util.Scanner; /** * Tính dãy số Fibonacci phương pháp đệ quy * * @author viettuts.vn */ public class FibonacciExample2 { private static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String[] args) { System.out.print("Nhập số nguyên dương n = "); int n = scanner.nextInt(); System.out.println(n + " số dãy số fibonacci: "); for (int i = 0; i < n; i++) { System.out.print(fibonacci(i) + " "); } } /** * Tính số fibonacci thứ n * 5/15 25/12/2019 Bài tập java có lời giải - Học lập trình Java - Viettuts 29 30 31 32 33 34 35 36 37 38 39 40 41 42 } * @param n: số số fibonacci tính từ * vd: F0 = 0, F1 = 1, F2 = 1, F3 = * @return số fibonacci thứ n */ public static int fibonacci(int n) { if (n < 0) { return -1; } else if (n == || n == 1) { return n; } else { return fibonacci(n - 1) + fibonacci(n - 2); } } Kết quả: Nhập số nguyên dương n = 12 12 số dãy số fibonacci: 1 13 21 34 55 89 Bài 07: Viết chương trình tìm ước số chung lớn (USCLN) bội số chung nhỏ (BSCNN) hai số nguyên dương a b nhập từ bàn phím Gợi ý: Sử dụng giải thuật Euclid Code mẫu: 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 https://viettuts.vn/bai-tap-java package vn.viettuts.baitap; ? import java.util.Scanner; public class USCLL_BSCNN_1 { private static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String[] args) { System.out.print("Nhập số nguyên dương a = "); int a = scanner.nextInt(); System.out.print("Nhập số nguyên dương b = "); int b = scanner.nextInt(); // tính USCLN a b System.out.println("USCLN " + a + " " + b + " là: " + USCLN(a, b)); // tính BSCNN a b System.out.println("BSCNN " + a + " " + b + " là: " + BSCNN(a, b)); } /** * Tìm ước số chung lớn (USCLN) * * @param a: số nguyên dương * @param b: số nguyên dương * @return USCLN a b */ public static int USCLN(int a, int b) { if (b == 0) return a; return USCLN(b, a % b); } } /** * Tìm bội số chung nhỏ (BSCNN) * * @param a: số nguyên dương * @param b: số nguyên dương * @return BSCNN a b */ public static int BSCNN(int a, int b) { return (a * b) / USCLN(a, b); } 6/15 25/12/2019 Bài tập java có lời giải - Học lập trình Java - Viettuts Kết quả: Nhập số nguyên dương a Nhập số nguyên dương b USCLN 10 24 là: BSCNN 10 24 là: = 10 = 24 120 Bài 08: Viết chương trình liệt kê tất số nguyên tố nhỏ n Số nguyên dương n nhập từ bàn phím Code mẫu: 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 package vn.viettuts.baitap; ? import java.util.Scanner; /** * Chương trình liệt kê tất số nguyên tố nhỏ n * * @author viettuts.vn */ public class BaiTap08 { private static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String[] args) { System.out.print("Nhập n = "); int n = scanner.nextInt(); System.out.printf("Tất số nguyên tố nhỏ %d là: \n", n); if (n >= 2) { System.out.print(2); } for (int i = 3; i < n; i+=2) { if (isPrimeNumber(i)) { System.out.print(" " + i); } } } } /** * check so nguyen to * * @author viettuts.vn * @param n: so nguyen duong * @return true la so nguyen so, * false khong la so nguyen to */ public static boolean isPrimeNumber(int n) { // so nguyen n < khong phai la so nguyen to if (n < 2) { return false; } // check so nguyen to n >= int squareRoot = (int) Math.sqrt(n); for (int i = 2; i = int squareRoot = (int) Math.sqrt(n); for (int i = 2; i = int squareRoot = (int) Math.sqrt(n); for (int i = 2; i 1) { if (n % i == 0) { n = n / i; listNumbers.add(i); } else { i++; } } // listNumbers trống add n vào listNumbers if (listNumbers.isEmpty()) { listNumbers.add(n); } return listNumbers; } Kết quả: Nhập số nguyên dương n = 100 Kết quả: 100 = x x x Bài 12: Viết chương trình tính tổng chữ số mơt số ngun n java Số nguyên dương n nhập từ bàn phím Với n = 1234, tổng chữ số: + + + = 10 Code mẫu: 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 https://viettuts.vn/bai-tap-java package vn.viettuts.baitap; ? import java.util.Scanner; /** * Chương trình tính tổng chữ số môt số nguyên dương n * Tổng chữ số 6677 + + + = 26 * * @author viettuts.vn */ public class BaiTap12 { private static Scanner scanner = new Scanner(System.in); public static int DEC_10 = 10; /** * main * * @param args */ public static void main(String[] args) { System.out.print("Nhập số nguyên dương n = "); int n = scanner.nextInt(); System.out.printf("Tổng chữ số " + "của %d là: %d", n, totalDigitsOfNumber(n)); } 10/15 25/12/2019 Bài tập java có lời giải - Học lập trình Java - Viettuts 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 } /** * Tính tổng chữ số số nguyên dương * * @param n: số nguyên dương * @return */ public static int totalDigitsOfNumber(int n) { int total = 0; { total = total + n % DEC_10; n = n / DEC_10; } while (n > 0); return total; } Kết quả: Nhập số nguyên dương n = 6677 Tổng chữ số 6677 là: 26 Bài 13: Viết chương trình kiểm tra số n số thuận nghịch java Số nguyên dương n nhập từ bàn phím Code mẫu: 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 package vn.viettuts.baitap; import java.util.Scanner; /** * Chương trình liệt kê tất số thuận nghịch có chữa số * * @author viettuts.vn */ public class BaiTap13 { private static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String[] args) { System.out.print("Nhập số nguyên dương n = "); int n = scanner.nextInt(); System.out.println(n + " số thuận nghịch: " + isThuanNghich(n)); System.out.print("Nhập số nguyên dương m = "); int m = scanner.nextInt(); System.out.println(n + " số thuận nghịch: " + isThuanNghich(m)); } } Kết quả: https://viettuts.vn/bai-tap-java ? /** * Kiểm tra số thuận nghịch * * @param n: số nguyên dương * @return true số thuận nghịch * false không số thuận nghịch */ public static boolean isThuanNghich(int n) { // chuyển đổi số n thành chuỗi String String numberStr = String.valueOf(n); // kiểm tra tính thuận nghịch int size = numberStr.length(); for (int i = 0; i < (size/2); i++) { if (numberStr.charAt(i) != numberStr.charAt(size - i - 1)) { return false; } } return true; } 11/15 25/12/2019 Bài tập java có lời giải - Học lập trình Java - Viettuts Nhập số nguyên dương n = 123321 123321 số thuận nghịch: true Nhập số nguyên dương m = 123451 123321 số thuận nghịch: false Bài 14: Viết chương trình liệt kê số Fibonacci nhỏ n số nguyên tố java N số nguyên dương nhập từ bàn phím Code mẫu: 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 https://viettuts.vn/bai-tap-java package vn.viettuts.baitap; ? import java.util.Scanner; /** * Chương trình liệt kê số Fibonacci nhỏ n số nguyên tố * Với n nhập từ bàn phím * * @author viettuts.vn */ public class BaiTap14 { private static Scanner scanner = new Scanner(System.in); /** * main * * @param args */ public static void main(String[] args) { System.out.print("Nhập số tự nhiên n = "); int n = scanner.nextInt(); System.out.printf("Các số fibonacci nhỏ %d " + "là số nguyên tố: ", n); int i = 0; while (fibonacci(i) < 100) { int fi = fibonacci(i); if (isPrimeNumber(fi)) { System.out.print(fi + " "); } i++; } } /** * Tính số fibonacci thứ n * * @param n: số số fibonacci tính từ * vd: F0 = 0, F1 = 1, F2 = 1, F3 = * @return số fibonacci thứ n */ public static int fibonacci(int n) { if (n < 0) { return -1; } else if (n == || n == 1) { return n; } else { return fibonacci(n - 1) + fibonacci(n - 2); } } /** * check so nguyen to * * @author viettuts.vn * @param n: so nguyen duong * @return true la so nguyen so, * false khong la so nguyen to */ public static boolean isPrimeNumber(int n) { // so nguyen n < khong phai la so nguyen to if (n < 2) { return false; } // check so nguyen to n >= int squareRoot = (int) Math.sqrt(n); for (int i = 2; i