Kết quả của chương trình sẽ là gì? #include
Trả lời:
Đáp án đúng: D
Đầu tiên, `x` được khởi tạo là 4.
`y = --x;` có nghĩa là `x` giảm đi 1 trước, sau đó giá trị mới của `x` được gán cho `y`. Vậy, `x` trở thành 3, và `y` cũng bằng 3.
`z = x--;` có nghĩa là giá trị hiện tại của `x` (là 3) được gán cho `z`, sau đó `x` giảm đi 1. Vậy, `z` bằng 3, và `x` trở thành 2.
Cuối cùng, `printf("%d %d %d", x, y, z);` in ra giá trị của `x`, `y`, và `z`, lần lượt là 2, 3, và 3.
Câu hỏi liên quan
Lời giải:
Đáp án đúng: A
Đoạn code sử dụng toán tử bậc ba (ternary operator) trong điều kiện của vòng lặp `while`. Hãy xem xét luồng thực thi:
1. Khởi tạo: `i = 2`, `j = 2`.
2. Vòng lặp `while`: Điều kiện `i+1? --i : j++` được đánh giá.
- `i + 1` (tức là `2 + 1 = 3`) khác 0, do đó biểu thức bên trái dấu `:` được thực thi, tức là `--i`.
- `--i` làm giảm `i` xuống 1 (vậy `i = 1`). Giá trị của biểu thức `--i` là 1.
- Vòng lặp in ra giá trị của `i` (tức là 1).
3. Lặp lại vòng lặp `while`:
- `i + 1` (tức là `1 + 1 = 2`) khác 0, do đó `--i` được thực thi.
- `--i` làm giảm `i` xuống 0 (vậy `i = 0`). Giá trị của biểu thức `--i` là 0.
- Vòng lặp in ra giá trị của `i` (tức là 0).
4. Lặp lại vòng lặp `while`:
- `i + 1` (tức là `0 + 1 = 1`) khác 0, do đó `--i` được thực thi.
- `--i` làm giảm `i` xuống -1 (vậy `i = -1`). Giá trị của biểu thức `--i` là -1.
- Vòng lặp in ra giá trị của `i` (tức là -1).
5. Lặp lại vòng lặp `while`:
- `i + 1` (tức là `-1 + 1 = 0`) bằng 0, do đó `j++` được thực thi.
- `j++` làm tăng `j` lên 1 (vậy `j = 3`). Giá trị của biểu thức `j++` là 2 (giá trị trước khi tăng).
- Vòng lặp in ra giá trị của `i` (tức là -1).
6. Lặp lại vòng lặp `while`:
- `i + 1` (tức là `-1 + 1 = 0`) bằng 0, do đó `j++` được thực thi.
- `j++` làm tăng `j` lên 1 (vậy `j = 4`). Giá trị của biểu thức `j++` là 3 (giá trị trước khi tăng).
- Vòng lặp in ra giá trị của `i` (tức là -1).
Vì vòng lặp `while` không có điều kiện dừng cụ thể (ngoài việc `i + 1` bằng 0, nhưng `i` luôn bị thay đổi và `j` luôn tăng), nên vòng lặp sẽ tiếp tục cho đến khi có lỗi tràn số hoặc một điều kiện dừng khác bên ngoài vòng lặp (ví dụ: do người dùng can thiệp).
Tuy nhiên, trong các lựa chọn đưa ra, không có lựa chọn nào phản ánh chính xác đầu ra của vòng lặp này. Các giá trị i sẽ tiếp tục giảm cho đến khi i+1 = 0, lúc đó j sẽ tăng và quá trình lặp lại, vì thế đáp án đúng nhất là không có đáp án nào đúng.
1. Khởi tạo: `i = 2`, `j = 2`.
2. Vòng lặp `while`: Điều kiện `i+1? --i : j++` được đánh giá.
- `i + 1` (tức là `2 + 1 = 3`) khác 0, do đó biểu thức bên trái dấu `:` được thực thi, tức là `--i`.
- `--i` làm giảm `i` xuống 1 (vậy `i = 1`). Giá trị của biểu thức `--i` là 1.
- Vòng lặp in ra giá trị của `i` (tức là 1).
3. Lặp lại vòng lặp `while`:
- `i + 1` (tức là `1 + 1 = 2`) khác 0, do đó `--i` được thực thi.
- `--i` làm giảm `i` xuống 0 (vậy `i = 0`). Giá trị của biểu thức `--i` là 0.
- Vòng lặp in ra giá trị của `i` (tức là 0).
4. Lặp lại vòng lặp `while`:
- `i + 1` (tức là `0 + 1 = 1`) khác 0, do đó `--i` được thực thi.
- `--i` làm giảm `i` xuống -1 (vậy `i = -1`). Giá trị của biểu thức `--i` là -1.
- Vòng lặp in ra giá trị của `i` (tức là -1).
5. Lặp lại vòng lặp `while`:
- `i + 1` (tức là `-1 + 1 = 0`) bằng 0, do đó `j++` được thực thi.
- `j++` làm tăng `j` lên 1 (vậy `j = 3`). Giá trị của biểu thức `j++` là 2 (giá trị trước khi tăng).
- Vòng lặp in ra giá trị của `i` (tức là -1).
6. Lặp lại vòng lặp `while`:
- `i + 1` (tức là `-1 + 1 = 0`) bằng 0, do đó `j++` được thực thi.
- `j++` làm tăng `j` lên 1 (vậy `j = 4`). Giá trị của biểu thức `j++` là 3 (giá trị trước khi tăng).
- Vòng lặp in ra giá trị của `i` (tức là -1).
Vì vòng lặp `while` không có điều kiện dừng cụ thể (ngoài việc `i + 1` bằng 0, nhưng `i` luôn bị thay đổi và `j` luôn tăng), nên vòng lặp sẽ tiếp tục cho đến khi có lỗi tràn số hoặc một điều kiện dừng khác bên ngoài vòng lặp (ví dụ: do người dùng can thiệp).
Tuy nhiên, trong các lựa chọn đưa ra, không có lựa chọn nào phản ánh chính xác đầu ra của vòng lặp này. Các giá trị i sẽ tiếp tục giảm cho đến khi i+1 = 0, lúc đó j sẽ tăng và quá trình lặp lại, vì thế đáp án đúng nhất là không có đáp án nào đúng.
Lời giải:
Đáp án đúng: C
Đầu tiên, gán i = 6.
Vòng lặp while(i) sẽ tiếp tục cho đến khi i = 0.
- Lần lặp 1: i = 6. Vì i > 5, nên i-- (i = 5). Sau đó, i = i + 5 (i = 10). Vì i không lớn hơn 34, vòng lặp tiếp tục.
- Lần lặp 2: i = 10. Vì i > 5, nên i-- (i = 9). Sau đó, i = i + 5 (i = 14). Vì i không lớn hơn 34, vòng lặp tiếp tục.
- Lần lặp 3: i = 14. Vì i > 5, nên i-- (i = 13). Sau đó, i = i + 5 (i = 18). Vì i không lớn hơn 34, vòng lặp tiếp tục.
- Lần lặp 4: i = 18. Vì i > 5, nên i-- (i = 17). Sau đó, i = i + 5 (i = 22). Vì i không lớn hơn 34, vòng lặp tiếp tục.
- Lần lặp 5: i = 22. Vì i > 5, nên i-- (i = 21). Sau đó, i = i + 5 (i = 26). Vì i không lớn hơn 34, vòng lặp tiếp tục.
- Lần lặp 6: i = 26. Vì i > 5, nên i-- (i = 25). Sau đó, i = i + 5 (i = 30). Vì i không lớn hơn 34, vòng lặp tiếp tục.
- Lần lặp 7: i = 30. Vì i > 5, nên i-- (i = 29). Sau đó, i = i + 5 (i = 34). Vì i không lớn hơn 34, vòng lặp tiếp tục.
- Lần lặp 8: i = 34. Vì i > 5, nên i-- (i = 33). Sau đó, i = i + 5 (i = 38). Vì i > 34, vòng lặp bị break.
printf("%d", i) sẽ in ra giá trị của i là 38.
Vòng lặp while(i) sẽ tiếp tục cho đến khi i = 0.
- Lần lặp 1: i = 6. Vì i > 5, nên i-- (i = 5). Sau đó, i = i + 5 (i = 10). Vì i không lớn hơn 34, vòng lặp tiếp tục.
- Lần lặp 2: i = 10. Vì i > 5, nên i-- (i = 9). Sau đó, i = i + 5 (i = 14). Vì i không lớn hơn 34, vòng lặp tiếp tục.
- Lần lặp 3: i = 14. Vì i > 5, nên i-- (i = 13). Sau đó, i = i + 5 (i = 18). Vì i không lớn hơn 34, vòng lặp tiếp tục.
- Lần lặp 4: i = 18. Vì i > 5, nên i-- (i = 17). Sau đó, i = i + 5 (i = 22). Vì i không lớn hơn 34, vòng lặp tiếp tục.
- Lần lặp 5: i = 22. Vì i > 5, nên i-- (i = 21). Sau đó, i = i + 5 (i = 26). Vì i không lớn hơn 34, vòng lặp tiếp tục.
- Lần lặp 6: i = 26. Vì i > 5, nên i-- (i = 25). Sau đó, i = i + 5 (i = 30). Vì i không lớn hơn 34, vòng lặp tiếp tục.
- Lần lặp 7: i = 30. Vì i > 5, nên i-- (i = 29). Sau đó, i = i + 5 (i = 34). Vì i không lớn hơn 34, vòng lặp tiếp tục.
- Lần lặp 8: i = 34. Vì i > 5, nên i-- (i = 33). Sau đó, i = i + 5 (i = 38). Vì i > 34, vòng lặp bị break.
printf("%d", i) sẽ in ra giá trị của i là 38.
Lời giải:
Đáp án đúng: D
Đoạn code sử dụng lệnh `switch` để kiểm tra giá trị của biến `check` với các trường hợp `arr[0]`, `arr[1]` và `arr[2]`.
- `check` được gán giá trị 20.
- `arr[0]` có giá trị 10.
- `arr[1]` có giá trị 20.
- `arr[2]` có giá trị 30.
Vì `check` bằng `arr[1]` (đều bằng 20), nên case `arr[1]` sẽ được thực thi. Lệnh `printf("B")` in ra ký tự "B".
Quan trọng: Trong cấu trúc `switch`, nếu không có lệnh `break` ở cuối mỗi `case`, chương trình sẽ tiếp tục thực thi các `case` tiếp theo cho đến khi gặp lệnh `break` hoặc kết thúc khối `switch`. Trong trường hợp này, vì không có `break` sau `case arr[1]`, nên `case arr[2]` cũng được thực thi, và lệnh `printf("C")` in ra ký tự "C".
Do đó, kết quả in ra màn hình là "BC".
- `check` được gán giá trị 20.
- `arr[0]` có giá trị 10.
- `arr[1]` có giá trị 20.
- `arr[2]` có giá trị 30.
Vì `check` bằng `arr[1]` (đều bằng 20), nên case `arr[1]` sẽ được thực thi. Lệnh `printf("B")` in ra ký tự "B".
Quan trọng: Trong cấu trúc `switch`, nếu không có lệnh `break` ở cuối mỗi `case`, chương trình sẽ tiếp tục thực thi các `case` tiếp theo cho đến khi gặp lệnh `break` hoặc kết thúc khối `switch`. Trong trường hợp này, vì không có `break` sau `case arr[1]`, nên `case arr[2]` cũng được thực thi, và lệnh `printf("C")` in ra ký tự "C".
Do đó, kết quả in ra màn hình là "BC".
Lời giải:
Đáp án đúng: A
Đoạn code sử dụng toán tử dấu phẩy (comma operator) trong điều kiện `if`. Toán tử dấu phẩy đánh giá các biểu thức từ trái sang phải và trả về giá trị của biểu thức cuối cùng. Trong trường hợp này, biểu thức `i = 15, 10, 5` sẽ gán giá trị 15 cho `i`, sau đó đánh giá 10 và cuối cùng là 5. Giá trị trả về của toàn bộ biểu thức là 5. Vì vậy, điều kiện `if` sẽ kiểm tra giá trị 5. Trong C/C++, mọi giá trị khác 0 được coi là true. Do đó, phần thân của `if` được thực thi và in ra "C/C++ 5". Tuy nhiên không có đáp án nào đúng.
Lời giải:
Đáp án đúng: C
Đề bài cho một đoạn code C và hỏi về kết quả in ra màn hình. Đoạn code này sử dụng con trỏ và hàm để thay đổi giá trị của chuỗi.
Phân tích:
1. `char* string = (char*)malloc(64);`: Cấp phát bộ nhớ động cho chuỗi `string` với kích thước 64 bytes.
2. `strcpy(string, "hello_World");`: Sao chép chuỗi "hello_World" vào vùng nhớ mà `string` trỏ tới.
3. `myfunc(&string);`: Gọi hàm `myfunc` và truyền địa chỉ của con trỏ `string` vào. Hàm `myfunc` nhận một con trỏ tới con trỏ (char** param). Trong hàm, `++*param` tăng giá trị của con trỏ `string` lên một đơn vị (tức là trỏ tới ký tự tiếp theo trong chuỗi).
4. `myfunc(&string);`: Gọi hàm `myfunc` lần thứ hai. Con trỏ `string` tiếp tục trỏ tới ký tự tiếp theo.
5. `printf("%s\n", string);`: In chuỗi bắt đầu từ vị trí mà `string` đang trỏ tới.
Như vậy, sau hai lần gọi hàm `myfunc`, con trỏ `string` sẽ trỏ tới ký tự thứ ba của chuỗi (ký tự 'l'). Do đó, khi in ra, chuỗi sẽ bắt đầu từ ký tự 'l' và có giá trị là "llo_World".
Phân tích:
1. `char* string = (char*)malloc(64);`: Cấp phát bộ nhớ động cho chuỗi `string` với kích thước 64 bytes.
2. `strcpy(string, "hello_World");`: Sao chép chuỗi "hello_World" vào vùng nhớ mà `string` trỏ tới.
3. `myfunc(&string);`: Gọi hàm `myfunc` và truyền địa chỉ của con trỏ `string` vào. Hàm `myfunc` nhận một con trỏ tới con trỏ (char** param). Trong hàm, `++*param` tăng giá trị của con trỏ `string` lên một đơn vị (tức là trỏ tới ký tự tiếp theo trong chuỗi).
4. `myfunc(&string);`: Gọi hàm `myfunc` lần thứ hai. Con trỏ `string` tiếp tục trỏ tới ký tự tiếp theo.
5. `printf("%s\n", string);`: In chuỗi bắt đầu từ vị trí mà `string` đang trỏ tới.
Như vậy, sau hai lần gọi hàm `myfunc`, con trỏ `string` sẽ trỏ tới ký tự thứ ba của chuỗi (ký tự 'l'). Do đó, khi in ra, chuỗi sẽ bắt đầu từ ký tự 'l' và có giá trị là "llo_World".
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