Bài Tập Tự Luận Java Cơ Bản Có Lời Giải
Có thể bạn quan tâm
- Trang chủ
- Hướng dẫn
- Ôn thi
- Tin học
Sau khi đã đi qua các phần lý thuyết của ngôn ngữ lập trình Java. Để hiểu rõ và vận dụng được những gì đã học, chúng ta sẽ đến với phần bài tập cơ bản Java. Cùng theo dõi và thực hành theo nhé!
Mục lục nội dung
1. Bài 01
2. Bài 02
3. Bài 03
4. Bài 04
5. Bài 05
6. Bài 06
7. Bài 07
8. Bài 08
9. Bài 09
10. Bài 10
Trong phần này, bạn phải nắm được các kiến thức về:
- Các mệnh đề if-else, switch-case.
- Các vòng lặp for, while, do-while.
- Các từ khóa break và continue trong java.
- Các toán tử trong java.
- Mảng (array) trong java.
- File I/O trong java.
- Xử lý ngoại lệ trong java.
1. Bài 01
Viết chương trình tìm tất cả các số chia hết cho 7 nhưng không phải bội số của 5, nằm trong đoạn 10 và 200 (tính cả 10 và 200). Các số thu được sẽ được in thành chuỗi trên một dòng, cách nhau bằng dấu phẩy.
Gợi ý: Sử dụng vòng lặp for
Code mẫu:
package vn.eLib.baitap; import java.util.ArrayList; import java.util.List; public class Bai01 { public static void main(String[] args) { List < Integer > list = new ArrayList < Integer > (); for (int i = 10; i < 201; i++) { if ((i % 7 == 0) && (i % 5 != 0)) { list.add(i); } } // hiển thị list ra màn hình showList(list); } public static void showList(List < Integer > 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, 1962. Bài 02:
Viết một chương trình tính giai thừa của một số nguyên dương n. Với n được nhập từ bàn phím. Ví dụ, n = 8 thì kết quả đầu ra phải là 1*2*3*4*5*6*7*8 = 40320.
Gợi ý: Sử dụng đệ quy hoặc vòng lặp để tính giai thừa.
Code mẫu: sử dụng đệ quy
package vn.eLib.baitap; import java.util.Scanner; public class GiaiThuaDemo2 { private static Scanner scanner = new Scanner(System. in ); /** * main * * @author eLib.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 của " + n + " là: " + tinhGiaithua(n)); } /** * tinh giai thua * * @author eLib.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 = 8 Giai thừa của 8 là: 403203. Bài 03:
Hãy viết chương trình để tạo ra một map chứa (i, i*i), trong đó i là số nguyên từ 1 đến n (bao gồm cả 1 và n), n được nhập từ bàn phím. Sau đó in map này ra màn hình. Ví dụ: Giả sử số n là 8 thì đầu ra sẽ 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ừ 1 đến n.
Code mẫu:
package vn.eLib.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 < Integer, Integer > map = new HashMap < Integer, Integer > (); 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 }4. Bài 04
Viết chương trình giải phương trình bậc 2: ax2 + bx + c = 0.
Code mẫu:
package vn.eLib.baitap; import java.util.Scanner; /** * Giải phương trình bậc 2 * * @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 hằng số tự do, c = "); float c = scanner.nextFloat(); giaiPTBac2(a, b, c); } /** * Giải phương trình bậc 2: ax2 + bx + c = 0 * * @param a: hệ số bậc 2 * @param b: hệ số bậc 1 * @param c: số hạng tự do */ public static void giaiPTBac2(float a, float b, float c) { // kiểm tra các 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ó một 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ó 2 nghiệm là: " + "x1 = " + x1 + " và 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 = 2 Nhập hệ số bậc 1, b = 1 Nhập hằng số tự do, c = -1 Phương trình có 2 nghiệm là: x1 = 0.5 và x2 = -1.05. Bài 05
Viết chương trình chuyển đổi một số tự nhiên ở hệ số 10 thành một số ở hệ cơ số B (1 <= B <= 32) bất kỳ. Giả sử hệ cơ số cần chuyển là 2 <= B <= 16. Số đại điện cho hệ cơ số B > 10 là A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.
Gợi ý:
- Tham khảo bảng ASCII để chuyển đổi kiểu char thành String. Hàm chr(55 + m) trong ví dụ sau:
- Nếu m = 10 trả về chuỗi "A".
- Nếu m = 11 trả về chuỗi "B".
- Nếu m = 12 trả về chuỗi "C".
- Nếu m = 13 trả về chuỗi "D".
- Nếu m = 14 trả về chuỗi "E".
- Nếu m = 15 trả về chuỗi "F".
Code mẫu:
package vn.eLib.baitap; import java.util.Scanner; public class ConvertNumber { public static final char CHAR_55 = 55; 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("So " + n + " trong he co so 2 = " + ConvertNumber.convertNumber(n, 2)); System.out.println("So " + n + " trong he co so 16 = " + ConvertNumber.convertNumber(n, 16)); } /** * chuyen doi so nguyen n sang he co so b * * @author eLib.vn * @param n: so nguyen * @param b: he co so * @return he co so b */ public static String convertNumber(int n, int b) { if (n < 0 || b < 2 || b > 16) { return ""; } StringBuilder sb = new StringBuilder(); int m; int remainder = n; while (remainder > 0) { if (b > 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 trong he co so 2 = 1111 So 15 trong he co so 16 = F6. Bài 06:
Dãy số Fibonacci được định nghĩa như sau: F0 = 0, F1 = 1, F2 = 1, Fn = F(n-1) + F(n-2) với n >= 2. Ví dụ: 0, 1, 1, 2, 3, 5, 8, ... Hãy viết chương trình tìm n số Fibonacci đầu tiên.
Code mẫu:
package vn.eLib.baitap; import java.util.Scanner; /** * Tính dãy số Fibonacci bằng 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ố đầu tiên của dãy số fibonacci: "); for (int i = 0; i < n; i++) { System.out.print(fibonacci(i) + " "); } } /** * Tính số fibonacci thứ n * * @param n: chỉ số của số fibonacci tính từ 0 * vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2 * @return số fibonacci thứ n */ public static int fibonacci(int n) { if (n < 0) { return - 1; } else if (n == 0 || 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ố đầu tiên của dãy số fibonacci: 0 1 1 2 3 5 8 13 21 34 55 897. Bài 07
Viết chương trình tìm ước số chung lớn nhất (USCLN) và bội số chung nhỏ nhất (BSCNN) của hai số nguyên dương a và b nhập từ bàn phím.
Gợi ý:
- Sử dụng giải thuật Euclid.
Code mẫu:
package vn.eLib.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 của a và b System.out.println("USCLN của " + a + " và " + b + " là: " + USCLN(a, b)); // tính BSCNN của a và b System.out.println("BSCNN của " + a + " và " + b + " là: " + BSCNN(a, b)); } /** * Tìm ước số chung lớn nhất (USCLN) * * @param a: số nguyên dương * @param b: số nguyên dương * @return USCLN của a và 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ỏ nhất (BSCNN) * * @param a: số nguyên dương * @param b: số nguyên dương * @return BSCNN của a và b */ public static int BSCNN(int a, int b) { return (a * b) / USCLN(a, b); } }Kết quả:
Nhập số nguyên dương a = 10 Nhập số nguyên dương b = 24 USCLN của 10 và 24 là: 2 BSCNN của 10 và 24 là: 1208. Bài 08
Viết chương trình liệt kê tất cả các số nguyên tố nhỏ hơn n. Số nguyên dương n được nhập từ bàn phím.
Code mẫu:
package vn.eLib.baitap; import java.util.Scanner; /** * Chương trình liệt kê tất cả các số nguyên tố nhỏ hơn 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 cả các số nguyên tố nhỏ hơn %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 < 2 khong phai la so nguyen to if (n < 2) { return false; } // check so nguyen to khi n >= 2 int squareRoot = (int) Math.sqrt(n); for (int i = 2; i <= squareRoot; i++) { if (n % i == 0) { return false; } } return true; } }Kết quả:
Nhập n = 100 Tất cả các số nguyên tố nhỏ hơn 100 là: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 979. Bài 09:
Viết chương trình liệt kê n số nguyên tố đầu tiên trong java. Số nguyên dương n được nhập từ bàn phím.
Code mẫu:
package vn.eLib.baitap; import java.util.Scanner; /** * Chương trình liệt kê n số nguyên tố đầu tiên. * * @author viettuts.vn */ public class BaiTap09 { 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("%d số nguyên tố đầu tiên là: \n", n); int dem = 0; // đếm số số nguyên tố int i = 2; // tìm số nguyên tố bắt dầu từ số 2 while (dem < n) { if (isPrimeNumber(i)) { System.out.print(i + " "); dem++; } i++; } } /** * check so nguyen to * * @author eLib.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 < 2 khong phai la so nguyen to if (n < 2) { return false; } // check so nguyen to khi n >= 2 int squareRoot = (int) Math.sqrt(n); for (int i = 2; i <= squareRoot; i++) { if (n % i == 0) { return false; } } return true; } }Kết quả:
Nhập n = 10 10 số nguyên tố đầu tiên là: 2 3 5 7 11 13 17 19 23 2910. Bài 10
Viết chương trình liệt kê tất cả số nguyên tố có 5 chữ số trong java.
Code mẫu:
package vn.eLib.baitap; /** * Chương trình liệt kê tất cả số nguyên tố có 5 chữ số. * * @author eLib.vn */ public class BaiTap10 { /** * main * * @param args */ public static void main(String[] args) { int count = 0; System.out.println("Liệt kê tất cả số nguyên tố có 5 chữ số:"); for (int i = 10001; i < 99999; i += 2) { if (isPrimeNumber(i)) { System.out.println(i); count++; } } System.out.println("Tổng các số nguyên tố có 5 chữ số là: " + count); } /** * check so nguyen to * * @author eLib.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 < 2 khong phai la so nguyen to if (n < 2) { return false; } // check so nguyen to khi n >= 2 int squareRoot = (int) Math.sqrt(n); for (int i = 2; i <= squareRoot; i++) { if (n % i == 0) { return false; } } return true; } }Kết quả:
Liệt kê tất cả số nguyên tố có 5 chữ số: 10007 10009 10037 ... 99971 99989 99991 Tổng các số nguyên tố có 5 chữ số là: 8363Trên đây là 10 bài tập cơ bản về Java có lời giải mà eLib đã tổng hợp được. Để hiểu rõ và vận dụng các kiến thức đã học vào quá trình lập trình, eLib khuyên bạn nên thực hành thật nhiều và thử va chạm với nhiều dạng bài tập. Chúc các bạn thành công!
Để củng cố và nắm vững các phần kiến thức đã học, các bạn có thể làm bộ câu hỏi trắc nghiệm 200 câu hỏi trắc nghiệm lập trình Java có đáp án và lời giải chi tiết
Trắc Nghiệm
Tham khảo thêm
- docx Câu hỏi trắc nghiệm ôn tập Java cơ bản
- docx Ngân hàng câu hỏi trắc nghiệm Java có đáp án
- doc Bài tập String trong Java có lời giải
- doc Bài tập Array trong Java có lời giải
- doc Bài tập về các thuật toán sắp xếp trong Java có lời giải
- doc Bài tập tự luận Java nâng cao có lời giải
CÓ THỂ BẠN QUAN TÂM
- Bài 2: Đối tượng, mục đích và yêu cầu về phương pháp học tập, nghiên cứu những nguyên lý cơ bản của chủ nghĩa Mác - Lênin
- Từ vựng tiếng Anh chủ đề các loài động vật
- Từ vựng tiếng Anh chủ đề các loài cây
- Từ vựng tiếng Anh chủ đề các loại trái cây
- Từ vựng tiếng Anh chủ đề các loại rau củ
- Từ vựng tiếng Anh chủ đề phong cảnh
- Từ vựng tiếng Anh chủ đề thời tiết
- Từ vựng tiếng Anh chủ đề môi trường
- Bài 1: Đối tượng nghiên cứu
- Từ vựng tiếng Anh chủ đề màu sắc
Giới thiệu về Lập trình Java
- 1 Lịch sử và tổng quan về ngôn ngữ Java
- 2 Chương trình Java đầu tiên Hello World
- 3 Cài đặt môi trường và thiết lập Path trong Java
- 4 Cú pháp Java cơ bản
- 5 Giới thiệu JDK, JRE và JVM trong Java
- 6 Các kiểu biến trong Java
- 7 Kiểu dữ liệu trong Java
- 8 Toán tử trong Java
- 9 Các loại vòng lặp trong Java
- 10 Lệnh IF/ELSE, Lệnh SWITCH/CASE trong Java
- 11 Đối tượng Number trong Java
- 12 Đối tượng Character trong Java
Khái niệm Hướng đối tượng
- 1 Đối tượng và lớp (class) trong Java
- 2 Phương thức trong Java
- 3 Nạp chồng phương thức trong Java
- 4 Constructor trong Java
- 5 Từ khóa static trong Java
- 6 Từ khóa this trong Java
- 7 Tính kế thừa trong Java trong Java
- 8 Ghi đè phương thức trong Java
- 9 Kiểu trả về covariant trong Java
- 10 Từ khóa super trong Java
- 11 Từ khóa final trong Java
- 12 Tính đa hình trong Java
- 13 Gắn kết tĩnh và Gắn kết động trong Java
- 14 Toán tử instanceof trong Java
- 15 Tính trừu tượng trong Java
- 16 Abstract Class trong Java
- 17 Interface trong Java
- 18 Phân biệt lớp abstract và Interface trong Java
- 19 Package trong Java
- 20 Các kiểu Modifie trong Java
- 21 Access Modifier trong Java
- 22 Non Access Modifier trong Java
- 23 Tính đóng gói trong Java
- 24 Lớp Object trong Java
- 25 Nhân bản đối tượng trong Java
- 26 Mảng (Array) trong Java
- 27 Lớp Wrapper trong Java
- 28 Truyền giá trị và tham chiếu trong Java
- 29 Từ khóa strictfp trong Java
- 30 Regular Expression trong Java
File và I/O trong Java
- 1 File và I/O trong Java
- 2 ByteArrayInputStream trong Java
- 3 DataInputStream trong Java
- 4 ByteArrayOutputStream trong Java
- 5 DataOutputStream trong Java
- 6 Lớp File trong Java
- 7 Lớp FileReader trong Java
- 8 Lớp FileWriter trong Java
String trong Java
- 1 String trong Java
- 2 Immutable String trong Java
- 3 So sánh chuỗi trong Java
- 4 Nối chuỗi trong Java
- 5 Chuỗi con trong Java
- 6 Phương thức của lớp String trong Java
- 7 Lớp StringBuffer trong Java
- 8 StringBuilder trong Java
- 9 So sánh lớp String và StringBuffer trong Java
- 10 So sánh lớp StringBuffer và StringBuilder trong Java
- 11 String toString() trong Java
- 12 Lớp StringTokenizer trong Java
Xử lý ngoại lệ (Exception Handling)
- 1 Exception trong Java
- 2 Khối try-catch trong Java
- 3 Khối finally trong Java
- 4 Từ khóa throw trong Java
- 5 Từ khóa throws trong Java
- 6 ExceptionHandling và Ghi đè phương thức trong Java
- 7 Custom Exception trong Java
Cấu trúc dữ liệu trong Java
- 1 Cấu trúc dữ liệu trong Java
- 2 Enum trong Java
- 3 Lớp BitSet trong Java
- 4 Lớp Vector trong Java
- 5 Lớp Stack trong Java
- 6 Lớp Dictionary trong Java
- 7 Lớp Hashtable trong Java
- 8 Lớp Properties trong Java
Collection trong Java
- 1 Collection trong Java
- 2 Collection Interface trong Java
- 3 List Interface trong Java
- 4 Set Interface trong Java
- 5 SortedSet Interface trong Java
- 6 Map Interface trong Java
- 7 Map.Entry Interface trong Java
- 8 SortedMap Interface trong Java
- 9 Lớp LinkedList trong Java
- 10 Lớp ArrayList trong Java
- 11 Lớp HashSet trong Java
- 12 Lớp LinkedHashSet trong Java
- 13 Lớp TreeSet trong Java
- 14 Lớp HashMap trong Java
- 15 Lớp TreeMap trong Java
- 16 Thuật toán Collection trong Java
- 17 Sử dụng Iterator trong Java
- 18 Sử dụng Comparator trong Java
Java Nâng cao
- 1 Generic trong Java
- 2 Serialization trong Java
- 3 Lập trình mạng Socket trong Java
- 4 Gửi Email trong Java
- 5 Thread trong Java
- 6 Applet trong Java
- 7 Tạo Javadoc
Bài tập Java
- 1 Bài tập tự luận java cơ bản có lời giải
- 2 Câu hỏi trắc nghiệm Java cơ bản
- 3 Ngân hàng câu hỏi trắc nghiệm Java có đáp án
- 4 Bài tập String trong Java
- 5 Bài tập Array trong Java
- 6 Bài tập về các thuật toán sắp xếp trong Java
- 7 Bài tập tự luận Java nâng cao
Tài liệu tham khảo Java
- 1 Tài liệu tham khảo về Java
Thông báo
Bạn vui lòng đăng nhập trước khi sử dụng chức năng này Bỏ qua Đăng nhập ATNETWORK ATNETWORK
Từ khóa » đề Thi Java Cơ Bản
-
Chủ Đề: Đề Thi Java (Có Lời Giải Chi Tiết
-
300 Câu Hỏi Trắc Nghiệm Lập Trình Java Có đáp án Và Lời Giải Chi Tiết
-
20 BÀI TẬP JAVA CƠ BẢN CHO NGƯỜI MỚI HỌC (CÓ ĐÁP ÁN)
-
200 Bài Tập Java Cơ Bản Có Lời Giải Chi Tiết
-
Bài Tập Java Có Lời Giải Cơ Bản đến Nâng Cao
-
Top 15 đề Thi Java Có đáp An
-
Top 14 đề Thi Java Lý Thuyết
-
Bài Tập Java Có Lời Giải - Học Lập Trình Java - VietTuts
-
ĐỀ THI KẾT THÚC HỌC PHẦN JAVA - Tài Liệu Text - 123doc
-
Đề Thi Lập Trình Hướng đối Tượng Java?
-
đề Thi Lập Trình Hướng đối Tượng Java - Trần Gia Hưng
-
[Java] Chữa đề Thi Cuối Kỳ Lập Trình Java Core - Ngày 25/07/2021
-
Tổng Hợp Bài Tập Java Cơ Bản (Exercise Java Core) - Deft Blog
-
Bài Tập Java Cơ Bản, Có Lời Giải Code Mẫu