Cho đoạn chương trình sau:
public class Test {
public static void main(String[] args) {
int n,k,dem;
for ( k = 1; k <= 10; k++ ) {
dem = 0;
for ( n = 3; n <= k; n++ ) {
if ( k%n==1) {
dem++;
}
if (dem > 1)
System.out.print(k);
}
}
}
}
Đoạn chương trình trên cho kết quả là bao nhiêu?
=>=>
Trả lời:
Đáp án đúng: D
Câu hỏi liên quan
Lời giải:
Đáp án đúng: C
Đ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 `while`, biến `k` tăng lên mỗi lần lặp. Một vòng lặp `for` được sử dụng để kiểm tra xem `k` có phải là số nguyên tố hay không. Nếu `k` chia hết cho một số `n` trong khoảng từ 2 đến `k-1`, biến `dem` tăng lên. Nếu `dem` bằng 1 (tức là `k` có đúng một ước số trong khoảng đó), `k` được in ra và `j` tăng lên.
Chúng ta hãy theo dõi các giá trị của `k`, `dem`, và `j` trong quá trình thực thi:
- k = 1: Vòng lặp `for` không thực hiện vì `n = 2` và `n < k` (tức là `2 < 1`) là sai. `dem` vẫn là 0. Không in gì cả.
- k = 2: Vòng lặp `for` không thực hiện vì `n = 2` và `n < k` (tức là `2 < 2`) là sai. `dem` vẫn là 0. Không in gì cả.
- k = 3: Vòng lặp `for` chạy với `n = 2`. `3 % 2 != 0` nên `dem` vẫn là 0. Không in gì cả.
- k = 4: Vòng lặp `for` chạy với `n = 2` và `n = 3`. `4 % 2 == 0` nên `dem` tăng lên 1. In ra `4`. `j` tăng lên 1 (j = 1).
- k = 5: Vòng lặp `for` chạy với `n = 2, 3, 4`. `5 % 2 != 0`, `5 % 3 != 0`, `5 % 4 != 0`. `dem` vẫn là 0. Không in gì cả.
- k = 6: Vòng lặp `for` chạy với `n = 2, 3, 4, 5`. `6 % 2 == 0` nên `dem` tăng lên 1. In ra `6`. `j` tăng lên 2 (j = 2).
- k = 7: Vòng lặp `for` chạy với `n = 2, 3, 4, 5, 6`. `7 % 2 != 0`, `7 % 3 != 0`, `7 % 4 != 0`, `7 % 5 != 0`, `7 % 6 != 0`. `dem` vẫn là 0. Không in gì cả.
- k = 8: Vòng lặp `for` chạy với `n = 2, 3, 4, 5, 6, 7`. `8 % 2 == 0` nên `dem` tăng lên 1. In ra `8`. `j` tăng lên 3 (j = 3). Vòng lặp `while` kết thúc.
Vậy kết quả in ra là: 4 6 8
Chúng ta hãy theo dõi các giá trị của `k`, `dem`, và `j` trong quá trình thực thi:
- k = 1: Vòng lặp `for` không thực hiện vì `n = 2` và `n < k` (tức là `2 < 1`) là sai. `dem` vẫn là 0. Không in gì cả.
- k = 2: Vòng lặp `for` không thực hiện vì `n = 2` và `n < k` (tức là `2 < 2`) là sai. `dem` vẫn là 0. Không in gì cả.
- k = 3: Vòng lặp `for` chạy với `n = 2`. `3 % 2 != 0` nên `dem` vẫn là 0. Không in gì cả.
- k = 4: Vòng lặp `for` chạy với `n = 2` và `n = 3`. `4 % 2 == 0` nên `dem` tăng lên 1. In ra `4`. `j` tăng lên 1 (j = 1).
- k = 5: Vòng lặp `for` chạy với `n = 2, 3, 4`. `5 % 2 != 0`, `5 % 3 != 0`, `5 % 4 != 0`. `dem` vẫn là 0. Không in gì cả.
- k = 6: Vòng lặp `for` chạy với `n = 2, 3, 4, 5`. `6 % 2 == 0` nên `dem` tăng lên 1. In ra `6`. `j` tăng lên 2 (j = 2).
- k = 7: Vòng lặp `for` chạy với `n = 2, 3, 4, 5, 6`. `7 % 2 != 0`, `7 % 3 != 0`, `7 % 4 != 0`, `7 % 5 != 0`, `7 % 6 != 0`. `dem` vẫn là 0. Không in gì cả.
- k = 8: Vòng lặp `for` chạy với `n = 2, 3, 4, 5, 6, 7`. `8 % 2 == 0` nên `dem` tăng lên 1. In ra `8`. `j` tăng lên 3 (j = 3). Vòng lặp `while` kết thúc.
Vậy kết quả in ra là: 4 6 8
Lời giải:
Đáp án đúng: B
Đoạn chương trình duyệt chuỗi s từ vị trí 0 đến s.length() - 2. Trong mỗi vòng lặp, chương trình trích xuất một chuỗi con s1 có độ dài 3 bắt đầu từ vị trí i. Nếu s1 bằng "abc", biến dem sẽ tăng lên 1.
Chúng ta hãy xem xét từng giá trị của i và chuỗi con s1 tương ứng:
- i = 0: s1 = "abc". dem = 1
- i = 1: s1 = "bcd". dem = 1
- i = 2: s1 = "c d". dem = 1
- i = 3: s1 = " de". dem = 1
- i = 4: s1 = "def". dem = 1
- i = 5: s1 = "ef ". dem = 1
- i = 6: s1 = "f a". dem = 1
- i = 7: s1 = " ab". dem = 1
- i = 8: s1 = "ab ". dem = 1
- i = 9: s1 = "b c". dem = 1
- i = 10: s1 = " abc". dem = 1
- i = 11: s1 = "abc". dem = 2
- i = 12: s1 = "bcc". dem = 2
- i = 13: s1 = "cdf". dem = 2
- i = 14: s1 = "dfg". dem = 2
- i = 15: s1 = "fg ". dem = 2
- i = 16: s1 = "g a". dem = 2
- i = 17: s1 = " abc". dem = 2
- i = 18: s1 = "abc". dem = 3
- i = 19: s1 = "bca". dem = 3
- i = 20: s1 = "cab". dem = 3
- i = 21: s1 = "abc". dem = 4
Vậy kết quả cuối cùng là 4.
Chúng ta hãy xem xét từng giá trị của i và chuỗi con s1 tương ứng:
- i = 0: s1 = "abc". dem = 1
- i = 1: s1 = "bcd". dem = 1
- i = 2: s1 = "c d". dem = 1
- i = 3: s1 = " de". dem = 1
- i = 4: s1 = "def". dem = 1
- i = 5: s1 = "ef ". dem = 1
- i = 6: s1 = "f a". dem = 1
- i = 7: s1 = " ab". dem = 1
- i = 8: s1 = "ab ". dem = 1
- i = 9: s1 = "b c". dem = 1
- i = 10: s1 = " abc". dem = 1
- i = 11: s1 = "abc". dem = 2
- i = 12: s1 = "bcc". dem = 2
- i = 13: s1 = "cdf". dem = 2
- i = 14: s1 = "dfg". dem = 2
- i = 15: s1 = "fg ". dem = 2
- i = 16: s1 = "g a". dem = 2
- i = 17: s1 = " abc". dem = 2
- i = 18: s1 = "abc". dem = 3
- i = 19: s1 = "bca". dem = 3
- i = 20: s1 = "cab". dem = 3
- i = 21: s1 = "abc". dem = 4
Vậy kết quả cuối cùng là 4.
Lời giải:
Đáp án đúng: C
Đoạn chương trình thực hiện các bước sau:
1. `String s= " Nguyen Van An ";`: Khởi tạo chuỗi `s` với giá trị " Nguyen Van An ".
2. `String s1 = new String();`: Khởi tạo một chuỗi rỗng `s1`.
3. `s = s.trim();`: Loại bỏ khoảng trắng ở đầu và cuối chuỗi `s`. Lúc này, `s` có giá trị "Nguyen Van An".
4. `for (i = s.length() - 1; i >= 0; i--) { ... }`: Vòng lặp duyệt ngược chuỗi `s` từ cuối lên đầu.
5. `s1 = s.substring(i,i+1);`: Lấy ký tự tại vị trí `i` của chuỗi `s` và gán cho `s1`.
6. `if (s1.equals(" ")) break;`: Nếu ký tự `s1` là khoảng trắng, vòng lặp sẽ dừng.
7. `System.out.print(s.substring(i+1));`: In ra chuỗi con của `s` bắt đầu từ vị trí `i+1` đến hết chuỗi.
Trong vòng lặp, biến `i` sẽ duyệt qua các vị trí của chuỗi "Nguyen Van An" từ phải sang trái. Vòng lặp dừng lại khi gặp khoảng trắng đầu tiên (tính từ cuối chuỗi). Khoảng trắng này nằm giữa "Van" và "An". Khi đó, `i` sẽ là vị trí của khoảng trắng đó.
Câu lệnh `System.out.print(s.substring(i+1));` sẽ in ra chuỗi con của `s` bắt đầu từ vị trí `i+1`. Vì `i` là vị trí của khoảng trắng giữa "Van" và "An", nên `i+1` là vị trí bắt đầu của từ "An". Do đó, chương trình sẽ in ra "An".
1. `String s= " Nguyen Van An ";`: Khởi tạo chuỗi `s` với giá trị " Nguyen Van An ".
2. `String s1 = new String();`: Khởi tạo một chuỗi rỗng `s1`.
3. `s = s.trim();`: Loại bỏ khoảng trắng ở đầu và cuối chuỗi `s`. Lúc này, `s` có giá trị "Nguyen Van An".
4. `for (i = s.length() - 1; i >= 0; i--) { ... }`: Vòng lặp duyệt ngược chuỗi `s` từ cuối lên đầu.
5. `s1 = s.substring(i,i+1);`: Lấy ký tự tại vị trí `i` của chuỗi `s` và gán cho `s1`.
6. `if (s1.equals(" ")) break;`: Nếu ký tự `s1` là khoảng trắng, vòng lặp sẽ dừng.
7. `System.out.print(s.substring(i+1));`: In ra chuỗi con của `s` bắt đầu từ vị trí `i+1` đến hết chuỗi.
Trong vòng lặp, biến `i` sẽ duyệt qua các vị trí của chuỗi "Nguyen Van An" từ phải sang trái. Vòng lặp dừng lại khi gặp khoảng trắng đầu tiên (tính từ cuối chuỗi). Khoảng trắng này nằm giữa "Van" và "An". Khi đó, `i` sẽ là vị trí của khoảng trắng đó.
Câu lệnh `System.out.print(s.substring(i+1));` sẽ in ra chuỗi con của `s` bắt đầu từ vị trí `i+1`. Vì `i` là vị trí của khoảng trắng giữa "Van" và "An", nên `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: C
Đoạn chương trình thực hiện các bước sau:
1. String s= " Nguyen Van An ";: Khởi tạo chuỗi `s` với giá trị " Nguyen Van An ". Lưu ý có khoảng trắng ở đầu chuỗi.
2. String s1 = new String();: Khởi tạo một chuỗi rỗng `s1`.
3. s = s.trim();: Loại bỏ khoảng trắng ở đầu và cuối chuỗi `s`. Lúc này, `s` có giá trị "Nguyen Van An".
4. for (i = 0; i <= s.length(); i++): Vòng lặp chạy từ `i = 0` đến `i = s.length()`. Đây là điểm quan trọng gây ra lỗi.
5. s1 = s.substring(i,i+1);: Trong vòng lặp, chương trình cố gắng lấy một ký tự từ chuỗi `s` bằng hàm `substring`. Khi `i = s.length()`, `i + 1` sẽ vượt quá độ dài của chuỗi, gây ra lỗi `StringIndexOutOfBoundsException`. Do đó, chương trình sẽ không thể chạy đến cuối vòng lặp và in ra kết quả.
Vì vòng lặp chạy đến `i = s.length()` (tức là 16 trong trường hợp này), khi đó `s.substring(16, 17)` sẽ gây ra lỗi vì chỉ số 17 nằm ngoài chuỗi. Do đó, chương trình sẽ ném ra một ngoại lệ và không in ra bất cứ thứ gì. Vì vậy, đáp án đúng nhất là "D. Lỗi biên dịch" mặc dù lỗi xảy ra khi chạy chương trình (runtime error), chứ không phải lỗi biên dịch (compile-time error). Trong trường hợp này, không có đáp án nào hoàn toàn chính xác, nhưng "Lỗi biên dịch" là lựa chọn gần đúng nhất, vì chương trình không thể hoàn thành việc thực thi do lỗi.
Tuy nhiên, theo cách hiểu thông thường, lỗi này không phải là lỗi biên dịch, mà là lỗi runtime (thời gian chạy). Vì không có đáp án chính xác hoàn toàn, ta sẽ chọn đáp án gần đúng nhất, đó là "D. Lỗi biên dịch".
1. String s= " Nguyen Van An ";: Khởi tạo chuỗi `s` với giá trị " Nguyen Van An ". Lưu ý có khoảng trắng ở đầu chuỗi.
2. String s1 = new String();: Khởi tạo một chuỗi rỗng `s1`.
3. s = s.trim();: Loại bỏ khoảng trắng ở đầu và cuối chuỗi `s`. Lúc này, `s` có giá trị "Nguyen Van An".
4. for (i = 0; i <= s.length(); i++): Vòng lặp chạy từ `i = 0` đến `i = s.length()`. Đây là điểm quan trọng gây ra lỗi.
5. s1 = s.substring(i,i+1);: Trong vòng lặp, chương trình cố gắng lấy một ký tự từ chuỗi `s` bằng hàm `substring`. Khi `i = s.length()`, `i + 1` sẽ vượt quá độ dài của chuỗi, gây ra lỗi `StringIndexOutOfBoundsException`. Do đó, chương trình sẽ không thể chạy đến cuối vòng lặp và in ra kết quả.
Vì vòng lặp chạy đến `i = s.length()` (tức là 16 trong trường hợp này), khi đó `s.substring(16, 17)` sẽ gây ra lỗi vì chỉ số 17 nằm ngoài chuỗi. Do đó, chương trình sẽ ném ra một ngoại lệ và không in ra bất cứ thứ gì. Vì vậy, đáp án đúng nhất là "D. Lỗi biên dịch" mặc dù lỗi xảy ra khi chạy chương trình (runtime error), chứ không phải lỗi biên dịch (compile-time error). Trong trường hợp này, không có đáp án nào hoàn toàn chính xác, nhưng "Lỗi biên dịch" là lựa chọn gần đúng nhất, vì chương trình không thể hoàn thành việc thực thi do lỗi.
Tuy nhiên, theo cách hiểu thông thường, lỗi này không phải là lỗi biên dịch, mà là lỗi runtime (thời gian chạy). Vì không có đáp án chính xác hoàn toàn, ta sẽ chọn đáp án gần đúng nhất, đó là "D. Lỗi biên dịch".
Lời giải:
Đáp án đúng: A
Đoạn mã tìm giá trị lớn nhất trong mảng `a`. Ban đầu, `max` được gán bằng `a[0]` là 3. Vòng lặp từ dòng 4 đến dòng 6 duyệt qua mảng `a`. Nếu `a[k]` lớn hơn `max`, thì `max` được cập nhật bằng `a[k]`.
- Khi `k=0`, `max = 3`, `a[0] = 3`. `max < a[0]` là sai.
- Khi `k=1`, `max = 3`, `a[1] = 1`. `max < a[1]` là sai.
- Khi `k=2`, `max = 3`, `a[2] = 7`. `max < a[2]` là đúng. `max` được cập nhật thành 7.
- Khi `k=3`, `max = 7`, `a[3] = 0`. `max < a[3]` là sai.
- Khi `k=4`, `max = 7`, `a[4] = 10`. `max < a[4]` là đúng. `max` được cập nhật thành 10.
Sau vòng lặp, `max` bằng 10. Dòng 7 in ra giá trị của `max`, là 10.
- Khi `k=0`, `max = 3`, `a[0] = 3`. `max < a[0]` là sai.
- Khi `k=1`, `max = 3`, `a[1] = 1`. `max < a[1]` là sai.
- Khi `k=2`, `max = 3`, `a[2] = 7`. `max < a[2]` là đúng. `max` được cập nhật thành 7.
- Khi `k=3`, `max = 7`, `a[3] = 0`. `max < a[3]` là sai.
- Khi `k=4`, `max = 7`, `a[4] = 10`. `max < a[4]` là đúng. `max` được cập nhật thành 10.
Sau vòng lặp, `max` bằng 10. Dòng 7 in ra giá trị của `max`, là 10.
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