Đầu ra là gì? void main() { int x = 0, y = 0; if(x == 0 || ++y) printf("x=%d", x); printf(" y=%d", y); getch(); }
Trả lời:
Đáp án đúng: B
Đoạn code này kiểm tra về toán tử `||` (OR). Trong C/C++, nếu vế đầu của `||` là true (khác 0), vế sau sẽ không được thực thi. Trong trường hợp này, `x == 0` là true, do đó `++y` không được thực thi. Biến `y` vẫn giữ giá trị ban đầu là 0. Sau đó, chương trình in ra giá trị của `x` và `y`.
Câu hỏi liên quan
Lời giải:
Đáp án đúng: B
Đoạn code này có một lỗi logic trong biểu thức điều kiện `if(a > b > c)`. Trong C, biểu thức này được đánh giá từ trái sang phải.
1. `a > b` (15 > 10) trả về 1 (true).
2. Sau đó, `1 > c` (1 > 5) được đánh giá, trả về 0 (false).
Do đó, điều kiện `if` trở thành `if (false)`, và phần `else` được thực thi, in ra "False".
1. `a > b` (15 > 10) trả về 1 (true).
2. Sau đó, `1 > c` (1 > 5) được đánh giá, trả về 0 (false).
Do đó, điều kiện `if` trở thành `if (false)`, và phần `else` được thực thi, in ra "False".
Lời giải:
Đáp án đúng: C
Đoạn code sử dụng cấu trúc `switch` trong C. Biến `a` được khởi tạo bằng 5.
- `switch(a)`: Khi `switch` được gọi, nó sẽ nhảy đến case tương ứng với giá trị của `a`. Vì không có `case 5:` ban đầu, nó sẽ đi vào `default:`, gán `a = 4;`.
- `case 6:`: Sau khi thực hiện `default`, chương trình *không* thoát khỏi `switch` mà tiếp tục thực hiện các `case` tiếp theo (fall-through). Do đó, `a--` được thực hiện, làm cho `a = 3;`.
- `case 5:`: Tiếp tục fall-through, `a = a + 1;` được thực hiện, làm cho `a = 4;`.
- `case 1:`: Tiếp tục fall-through, `a = a - 1;` được thực hiện, làm cho `a = 3;`.
Cuối cùng, `printf("%d \n", a);` in ra giá trị của `a`, là 3.
- `switch(a)`: Khi `switch` được gọi, nó sẽ nhảy đến case tương ứng với giá trị của `a`. Vì không có `case 5:` ban đầu, nó sẽ đi vào `default:`, gán `a = 4;`.
- `case 6:`: Sau khi thực hiện `default`, chương trình *không* thoát khỏi `switch` mà tiếp tục thực hiện các `case` tiếp theo (fall-through). Do đó, `a--` được thực hiện, làm cho `a = 3;`.
- `case 5:`: Tiếp tục fall-through, `a = a + 1;` được thực hiện, làm cho `a = 4;`.
- `case 1:`: Tiếp tục fall-through, `a = a - 1;` được thực hiện, làm cho `a = 3;`.
Cuối cùng, `printf("%d \n", a);` in ra giá trị của `a`, là 3.
Lời giải:
Đáp án đúng: A
Đoạn mã C này sử dụng các toán tử logic `||` (OR) và `&&` (AND).
Biểu thức `(1 || 0)` sẽ trả về `1` (true) vì chỉ cần một trong hai toán hạng là true thì kết quả là true.
Biểu thức `(0 || 1)` cũng sẽ trả về `1` (true) vì lý do tương tự.
Sau đó, biểu thức `(1 && 1)` sẽ được đánh giá. Vì cả hai toán hạng đều là `1` (true), kết quả cuối cùng là `1` (true).
Do đó, điều kiện `if` được thỏa mãn, và chương trình sẽ in ra "ABC".
Biểu thức `(1 || 0)` sẽ trả về `1` (true) vì chỉ cần một trong hai toán hạng là true thì kết quả là true.
Biểu thức `(0 || 1)` cũng sẽ trả về `1` (true) vì lý do tương tự.
Sau đó, biểu thức `(1 && 1)` sẽ được đánh giá. Vì cả hai toán hạng đều là `1` (true), kết quả cuối cùng là `1` (true).
Do đó, điều kiện `if` được thỏa mãn, và chương trình sẽ in ra "ABC".
Lời giải:
Đáp án đúng: C
Đoạn mã này minh họa phạm vi của biến trong C/C++. Biến `x` được khai báo ở hai phạm vi khác nhau: một ở bên ngoài hàm `main` (mặc dù trong trường hợp này nó được khai báo bên trong hàm main nhưng bên ngoài block bên trong), và một ở bên trong một khối lệnh (block) bên trong hàm `main`.\n\n1. `int x = 0;` (dòng 2): Khai báo biến `x` trong phạm vi của hàm `main`.\n2. `{ int x = 0, y = 0; y++; x++; }` (dòng 3-6): Khai báo một biến `x` *khác* và biến `y` trong một phạm vi hẹp hơn (block). Biến `x` này chỉ tồn tại và có giá trị trong block này. Khi khối lệnh này kết thúc, biến `x` này sẽ bị hủy.\n3. `printf("%d", x);` (dòng 7): Lệnh `printf` in giá trị của biến `x` được khai báo ở dòng 2, tức là biến `x` trong phạm vi của hàm `main`. Giá trị của biến `x` này không bị ảnh hưởng bởi biến `x` bên trong block.\n\nVì vậy, giá trị của `x` được in ra là 0, vì nó không bị thay đổi bởi khối lệnh bên trong.
Lời giải:
Đáp án đúng: A
Trong C/C++, so sánh trực tiếp hai số thực (float hoặc double) bằng toán tử `==`, `>` hoặc `<` có thể dẫn đến kết quả không mong muốn do sai số làm tròn (rounding errors). Kiểu `float` chỉ có độ chính xác hữu hạn. Số 0.7 trong code được hiểu là một số double (do không có hậu tố f), còn `a` là một float. Khi so sánh `0.7 > a`, số `a` sẽ được nâng cấp lên double để so sánh với 0.7. Tuy nhiên, do sai số làm tròn, giá trị double của `a` có thể hơi nhỏ hơn 0.7. Do đó, biểu thức `0.7 > a` có thể đúng. Trong trường hợp này, "Hi" sẽ được in ra. Tuy nhiên, do sai số này phụ thuộc vào trình biên dịch và nền tảng, kết quả có thể khác nhau trên các hệ thống khác nhau. Vì vậy, không có đáp án chính xác trong các lựa chọn đã cho.
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