Cho đoạn chương trình sau:
public class Test {
public static void main(String[] args) {
int k,n;
for (k=1;k<25;k++) {
if ((k%4==0) && (k%5==0))
System.out.print(k+” “);
}
}
}
Đoạn chương trình trên in ra kết quả bao nhiêu?
25;k++)>
Trả lời:
Đáp án đúng: B
Đoạn chương trình duyệt các số từ 1 đến 24 (k < 25). Câu lệnh `if ((k%4==0) && (k%5==0))` kiểm tra xem số `k` có đồng thời chia hết cho 4 và 5 hay không. Điều này tương đương với việc `k` chia hết cho BCNN(4, 5) = 20. Trong khoảng từ 1 đến 24, chỉ có số 20 thỏa mãn điều kiện này. Do đó, chương trình sẽ in ra số 20.
Câu hỏi liên quan
Lời giải:
Đáp án đúng: A
Đoạn chương trình trên thực hiện một vòng lặp `while` với điều kiện `j < 3`. Bên trong vòng lặp này, biến `k` tăng lên mỗi lần lặp. Một vòng lặp `for` lồng nhau kiểm tra xem `k` có chia hết cho bất kỳ số `n` nào từ 2 đến `k` hay không. Biến `dem` đếm số lượng ước của `k` trong khoảng từ 2 đến `k`. Nếu `dem` bằng 1, tức là `k` có duy nhất một ước trong khoảng đó (chính là `k` nếu `k` là số nguyên tố), thì `k` được in ra và `j` tăng lên. Vòng lặp `while` sẽ kết thúc khi `j` đạt đến 3.
Bước 1: k=1, dem=0, vòng for không chạy vì n=2 > k=1.
Bước 2: k=2, dem=0, vòng for chạy với n=2, k%n==0, dem=1. Vì dem==1 nên in ra 2, j=1.
Bước 3: k=3, dem=0, vòng for chạy với n=2, k%n!=0; n=3, k%n==0, dem=1. Vì dem==1 nên in ra 3, j=2.
Bước 4: k=4, dem=0, vòng for chạy với n=2, k%n==0, dem=1. Vì dem==1 nên in ra 4, j=3. Vòng while kết thúc.
Kết quả in ra là 2 3 4.
Tuy nhiên, không có đáp án nào trùng khớp với kết quả này. Xét lại điều kiện if(dem==1). Điều kiện này chỉ đúng khi k là số nguyên tố.
- k=1: vòng for không chạy.
- k=2: n=2, k%n==0, dem=1. In ra 2, j=1.
- k=3: n=2, k%n!=0; n=3, k%n==0, dem=1. In ra 3, j=2.
- k=4: n=2, k%n==0, dem=1. In ra 4, j=3. vòng while dừng.
Như vậy, kết quả in ra là 2 3 4. Tuy nhiên đáp án này không có trong các lựa chọn. Xem xét lại điều kiện dừng vòng lặp. Với k=4, dem=1, in ra 4, j=3. Như vậy vòng lặp while dừng. Vậy không có đáp án nào đúng.
Đáp án gần đúng nhất là đáp án C, tuy nhiên kết quả đúng phải là 2 3 4.
Bước 1: k=1, dem=0, vòng for không chạy vì n=2 > k=1.
Bước 2: k=2, dem=0, vòng for chạy với n=2, k%n==0, dem=1. Vì dem==1 nên in ra 2, j=1.
Bước 3: k=3, dem=0, vòng for chạy với n=2, k%n!=0; n=3, k%n==0, dem=1. Vì dem==1 nên in ra 3, j=2.
Bước 4: k=4, dem=0, vòng for chạy với n=2, k%n==0, dem=1. Vì dem==1 nên in ra 4, j=3. Vòng while kết thúc.
Kết quả in ra là 2 3 4.
Tuy nhiên, không có đáp án nào trùng khớp với kết quả này. Xét lại điều kiện if(dem==1). Điều kiện này chỉ đúng khi k là số nguyên tố.
- k=1: vòng for không chạy.
- k=2: n=2, k%n==0, dem=1. In ra 2, j=1.
- k=3: n=2, k%n!=0; n=3, k%n==0, dem=1. In ra 3, j=2.
- k=4: n=2, k%n==0, dem=1. In ra 4, j=3. vòng while dừng.
Như vậy, kết quả in ra là 2 3 4. Tuy nhiên đáp án này không có trong các lựa chọn. Xem xét lại điều kiện dừng vòng lặp. Với k=4, dem=1, in ra 4, j=3. Như vậy vòng lặp while dừng. Vậy không có đáp án nào đúng.
Đáp án gần đúng nhất là đáp án C, tuy nhiên kết quả đúng phải là 2 3 4.
Lời giải:
Đáp án đúng: D
Đoạn chương trình có một số vấn đề sau:
1. Khởi tạo `k`: Biến `k` được khởi tạo bằng 0. Vòng lặp `for (n = 2; n < k; n++)` sẽ không bao giờ được thực thi vì điều kiện `n < k` (tức là `n < 0`) luôn sai ngay từ đầu.
2. Điều kiện `if(dem==1)`: Điều kiện này chỉ kiểm tra khi `dem` bằng 1, tức là `k` có đúng một ước số trong khoảng từ 2 đến `k-1`. Số nguyên tố không có ước nào trong khoảng đó (ngoại trừ chính nó). Nên đoạn code này không tìm số nguyên tố.
3. Vòng lặp while: Vòng lặp `while(j<3)` có nhiệm vụ in ra 3 số, nhưng vì `k` luôn bằng 0, vòng lặp `for` không bao giờ chạy, biến `j` không được tăng lên.
Vì vòng lặp `for` không chạy nên biến `dem` không đổi, điều kiện `if(dem==1)` không bao giờ đúng, và `j` không bao giờ tăng. Do đó, vòng lặp `while` sẽ lặp vô hạn.
1. Khởi tạo `k`: Biến `k` được khởi tạo bằng 0. Vòng lặp `for (n = 2; n < k; n++)` sẽ không bao giờ được thực thi vì điều kiện `n < k` (tức là `n < 0`) luôn sai ngay từ đầu.
2. Điều kiện `if(dem==1)`: Điều kiện này chỉ kiểm tra khi `dem` bằng 1, tức là `k` có đúng một ước số trong khoảng từ 2 đến `k-1`. Số nguyên tố không có ước nào trong khoảng đó (ngoại trừ chính nó). Nên đoạn code này không tìm số nguyên tố.
3. Vòng lặp while: Vòng lặp `while(j<3)` có nhiệm vụ in ra 3 số, nhưng vì `k` luôn bằng 0, vòng lặp `for` không bao giờ chạy, biến `j` không được tăng lên.
Vì vòng lặp `for` không chạy nên biến `dem` không đổi, điều kiện `if(dem==1)` không bao giờ đúng, và `j` không bao giờ tăng. Do đó, vòng lặp `while` sẽ lặp vô hạn.
Lời giải:
Đáp án đúng: D
Đoạn chương trình duyệt chuỗi "Nguyen Van An".
- `s = s.trim();` loại bỏ khoảng trắng thừa ở đầu và cuối chuỗi (nếu có).
- Vòng lặp `for` duyệt từng ký tự của chuỗi.
- `s1 = s.substring(i, i+1);` lấy ra ký tự tại vị trí `i`.
- Nếu `s1` là khoảng trắng:
- `s1 = s.substring(i + 1, i + 2);` Lấy ký tự tiếp theo sau khoảng trắng (đây có vẻ là một lỗi, vì không kiểm tra `i+1` có vượt quá độ dài chuỗi không).
- `if (s.equals(" ")) continue;` Đây là lỗi sai nghiêm trọng. Điều kiện này so sánh cả chuỗi `s` với một khoảng trắng đơn, chắc chắn điều kiện này sai, nên `continue` không bao giờ được thực thi.
- `else s2 = s2 + s.substring(i,i + 1);` Cộng khoảng trắng vào `s2`.
- Nếu `s1` không phải là khoảng trắng:
- `s2 = s2 + s1;` Cộng ký tự vào `s2`.
`s2` ban đầu là chuỗi rỗng, và sẽ được xây dựng bằng cách duyệt và thêm từng ký tự (hoặc khoảng trắng) của `s` vào. Vì điều kiện `if (s.equals(" ")) continue;` luôn sai, nên tất cả các khoảng trắng đều được giữ lại.
Vậy kết quả in ra là chuỗi ban đầu: "Nguyen Van An".
- `s = s.trim();` loại bỏ khoảng trắng thừa ở đầu và cuối chuỗi (nếu có).
- Vòng lặp `for` duyệt từng ký tự của chuỗi.
- `s1 = s.substring(i, i+1);` lấy ra ký tự tại vị trí `i`.
- Nếu `s1` là khoảng trắng:
- `s1 = s.substring(i + 1, i + 2);` Lấy ký tự tiếp theo sau khoảng trắng (đây có vẻ là một lỗi, vì không kiểm tra `i+1` có vượt quá độ dài chuỗi không).
- `if (s.equals(" ")) continue;` Đây là lỗi sai nghiêm trọng. Điều kiện này so sánh cả chuỗi `s` với một khoảng trắng đơn, chắc chắn điều kiện này sai, nên `continue` không bao giờ được thực thi.
- `else s2 = s2 + s.substring(i,i + 1);` Cộng khoảng trắng vào `s2`.
- Nếu `s1` không phải là khoảng trắng:
- `s2 = s2 + s1;` Cộng ký tự vào `s2`.
`s2` ban đầu là chuỗi rỗng, và sẽ được xây dựng bằng cách duyệt và thêm từng ký tự (hoặc khoảng trắng) của `s` vào. Vì điều kiện `if (s.equals(" ")) continue;` luôn sai, nên tất cả các khoảng trắng đều được giữ lại.
Vậy kết quả in ra là chuỗi ban đầu: "Nguyen Van An".
Lời giải:
Đáp án đúng: A
Đoạn chương trình này thực hiện các bước sau:
1. Khởi tạo chuỗi s: `String s= " Nguyen Van An ";` Khởi tạo chuỗi s với giá trị " Nguyen Van An " (có khoảng trắng ở đầu).
2. Khởi tạo chuỗi s1: `String s1 = new String();` Khởi tạo một chuỗi s1 rỗng.
3. Cắt bỏ khoảng trắng đầu và cuối chuỗi s: `s = s.trim();` Loại bỏ khoảng trắng ở đầu và cuối chuỗi s. Lúc này, s = "Nguyen Van An".
4. Vòng lặp: Vòng lặp `for` duyệt ngược từ cuối chuỗi s đến khi gặp khoảng trắng đầu tiên (tính từ cuối chuỗi).
* `for (i = s.length() - 1; i >= 0; i--)`
* `s1 = s.substring(i,i+1);` Lấy ký tự tại vị trí i.
* `if (s1.equals(" ")) break;` Nếu ký tự tại vị trí i là khoảng trắng, vòng lặp dừng.
5. In ra chuỗi con: `System.out.print(s.substring(i+1));` In ra chuỗi con của s bắt đầu từ vị trí i+1. Vòng lặp dừng khi i là vị trí của khoảng trắng giữa "Van" và "An". Vậy i+1 là vị trí bắt đầu của từ "An". Do đó, chương trình sẽ in ra "An".
1. Khởi tạo chuỗi s: `String s= " Nguyen Van An ";` Khởi tạo chuỗi s với giá trị " Nguyen Van An " (có khoảng trắng ở đầu).
2. Khởi tạo chuỗi s1: `String s1 = new String();` Khởi tạo một chuỗi s1 rỗng.
3. Cắt bỏ khoảng trắng đầu và cuối chuỗi s: `s = s.trim();` Loại bỏ khoảng trắng ở đầu và cuối chuỗi s. Lúc này, s = "Nguyen Van An".
4. Vòng lặp: Vòng lặp `for` duyệt ngược từ cuối chuỗi s đến khi gặp khoảng trắng đầu tiên (tính từ cuối chuỗi).
* `for (i = s.length() - 1; i >= 0; i--)`
* `s1 = s.substring(i,i+1);` Lấy ký tự tại vị trí i.
* `if (s1.equals(" ")) break;` Nếu ký tự tại vị trí i là khoảng trắng, vòng lặp dừng.
5. In ra chuỗi con: `System.out.print(s.substring(i+1));` In ra chuỗi con của s bắt đầu từ vị trí i+1. Vòng lặp dừng khi i là vị trí của khoảng trắng giữa "Van" và "An". Vậy i+1 là vị trí bắt đầu của từ "An". Do đó, chương trình sẽ in ra "An".
Lời giải:
Đáp án đúng: D
Đoạn mã sử dụng hai vòng lặp for lồng nhau. Vòng lặp bên ngoài (outer) chạy với `i` từ 0 đến 1. Vòng lặp bên trong chạy với `j` từ 0 đến 2. Lệnh `continue outer;` sẽ bỏ qua các lệnh còn lại trong vòng lặp bên trong hiện tại và tiếp tục vòng lặp bên ngoài với giá trị `i` tiếp theo.
Ta xét các trường hợp:
- Khi i = 0, j = 0, điều kiện `i == j` đúng, `continue outer` được gọi. Vòng lặp bên trong bị bỏ qua và `i` tăng lên 1.
- Khi i = 0, j = 1, điều kiện `i == j` sai, in ra "i=0 j=1".
- Khi i = 0, j = 2, điều kiện `i == j` sai, in ra "i=0 j=2".
- Khi i = 1, j = 0, điều kiện `i == j` sai, in ra "i=1 j=0".
- Khi i = 1, j = 1, điều kiện `i == j` đúng, `continue outer` được gọi. Vòng lặp bên trong bị bỏ qua và `i` tăng lên 2, vòng lặp outer kết thúc.
- Khi i = 1, j = 2, điều kiện `i == j` sai, in ra "i=1 j=2".
Như vậy, các dòng có thể được in ra là:
"i=0 j=1", "i=0 j=2", "i=1 j=0", "i=1 j=2".
Trong các đáp án, chỉ có "i = 0 j = 1" và "i = 1 j = 0" xuất hiện trong kết quả có thể in ra.
Vì vậy, đáp án B và D đều đúng. Tuy nhiên, theo đề bài chỉ được chọn một đáp án. Trong trường hợp này, ta chọn đáp án B.
Ta xét các trường hợp:
- Khi i = 0, j = 0, điều kiện `i == j` đúng, `continue outer` được gọi. Vòng lặp bên trong bị bỏ qua và `i` tăng lên 1.
- Khi i = 0, j = 1, điều kiện `i == j` sai, in ra "i=0 j=1".
- Khi i = 0, j = 2, điều kiện `i == j` sai, in ra "i=0 j=2".
- Khi i = 1, j = 0, điều kiện `i == j` sai, in ra "i=1 j=0".
- Khi i = 1, j = 1, điều kiện `i == j` đúng, `continue outer` được gọi. Vòng lặp bên trong bị bỏ qua và `i` tăng lên 2, vòng lặp outer kết thúc.
- Khi i = 1, j = 2, điều kiện `i == j` sai, in ra "i=1 j=2".
Như vậy, các dòng có thể được in ra là:
"i=0 j=1", "i=0 j=2", "i=1 j=0", "i=1 j=2".
Trong các đáp án, chỉ có "i = 0 j = 1" và "i = 1 j = 0" xuất hiện trong kết quả có thể in ra.
Vì vậy, đáp án B và D đều đúng. Tuy nhiên, theo đề bài chỉ được chọn một đáp án. Trong trường hợp này, ta chọn đáp án B.
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

Bộ Đồ Án Tốt Nghiệp Ngành Trí Tuệ Nhân Tạo Và Học Máy
89 tài liệu310 lượt tải

Bộ 120+ Đồ Án Tốt Nghiệp Ngành Hệ Thống Thông Tin
125 tài liệu441 lượt tải

Bộ Đồ Án Tốt Nghiệp Ngành Mạng Máy Tính Và Truyền Thông
104 tài liệu687 lượt tải

Bộ Luận Văn Tốt Nghiệp Ngành Kiểm Toán
103 tài liệu589 lượt tải

Bộ 370+ Luận Văn Tốt Nghiệp Ngành Kế Toán Doanh Nghiệp
377 tài liệu1030 lượt tải

Bộ Luận Văn Tốt Nghiệp Ngành Quản Trị Thương Hiệu
99 tài liệu1062 lượt tải
ĐĂNG KÝ GÓI THI VIP
- Truy cập hơn 100K đề thi thử và chính thức các năm
- 2M câu hỏi theo các mức độ: Nhận biết – Thông hiểu – Vận dụng
- Học nhanh với 10K Flashcard Tiếng Anh theo bộ sách và chủ đề
- Đầy đủ: Mầm non – Phổ thông (K12) – Đại học – Người đi làm
- Tải toàn bộ tài liệu trên TaiLieu.VN
- Loại bỏ quảng cáo để tăng khả năng tập trung ôn luyện
- Tặng 15 ngày khi đăng ký gói 3 tháng, 30 ngày với gói 6 tháng và 60 ngày với gói 12 tháng.
77.000 đ/ tháng