Phép trừ hai con trỏ có cùng kiểu sẽ là:
Trả lời:
Đáp án đúng: B
Trong C/C++, khi trừ hai con trỏ có cùng kiểu, kết quả sẽ là một số nguyên. Số nguyên này biểu thị số lượng phần tử (có kiểu dữ liệu mà con trỏ trỏ tới) giữa hai địa chỉ mà hai con trỏ đang giữ.
Câu hỏi liên quan
Lời giải:
Đáp án đúng: D
Chương trình có một số vấn đề sau:
1. clrscr();: Hàm `clrscr()` không phải là một phần của thư viện chuẩn C/C++. Nó thường được sử dụng trong Turbo C++. Để chương trình biên dịch được trên các trình biên dịch khác, cần loại bỏ dòng này hoặc sử dụng các phương pháp xóa màn hình khác (ví dụ, sử dụng các lệnh điều khiển terminal).
2. char chu[80]: Mảng `chu` được khai báo nhưng không được khởi tạo. Do đó, nội dung của mảng là không xác định.
3. int tong, dem: Biến `tong` không được khởi tạo trước khi sử dụng trong vòng lặp `for (dem = 0; dem < tong; dem++);`. Điều này dẫn đến việc vòng lặp có thể chạy không đúng số lần, hoặc thậm chí không chạy nếu `tong` có giá trị âm hoặc bằng 0.
4. for (dem = 0; dem < tong; ++dem) putchar(toupper(chu[dem]));: Vòng lặp này cố gắng in các ký tự từ mảng `chu` sau khi chuyển chúng thành chữ hoa bằng hàm `toupper()`. Tuy nhiên, vì `chu` không được khởi tạo và `tong` có thể có giá trị không xác định, chương trình có thể truy cập vào các vùng nhớ không hợp lệ, dẫn đến hành vi không xác định hoặc lỗi.
5. return;: Trong hàm `main()`, nếu kiểu trả về là `int`, ta nên trả về một giá trị nguyên (thường là 0 để báo hiệu chương trình chạy thành công).
Do các lỗi trên, chương trình có thể không chạy được hoặc cho ra kết quả không xác định. Không có đáp án nào trong các lựa chọn phù hợp với hành vi thực tế của chương trình. Vì vậy, đáp án đúng nhất là "Kết quả khác".
1. clrscr();: Hàm `clrscr()` không phải là một phần của thư viện chuẩn C/C++. Nó thường được sử dụng trong Turbo C++. Để chương trình biên dịch được trên các trình biên dịch khác, cần loại bỏ dòng này hoặc sử dụng các phương pháp xóa màn hình khác (ví dụ, sử dụng các lệnh điều khiển terminal).
2. char chu[80]: Mảng `chu` được khai báo nhưng không được khởi tạo. Do đó, nội dung của mảng là không xác định.
3. int tong, dem: Biến `tong` không được khởi tạo trước khi sử dụng trong vòng lặp `for (dem = 0; dem < tong; dem++);`. Điều này dẫn đến việc vòng lặp có thể chạy không đúng số lần, hoặc thậm chí không chạy nếu `tong` có giá trị âm hoặc bằng 0.
4. for (dem = 0; dem < tong; ++dem) putchar(toupper(chu[dem]));: Vòng lặp này cố gắng in các ký tự từ mảng `chu` sau khi chuyển chúng thành chữ hoa bằng hàm `toupper()`. Tuy nhiên, vì `chu` không được khởi tạo và `tong` có thể có giá trị không xác định, chương trình có thể truy cập vào các vùng nhớ không hợp lệ, dẫn đến hành vi không xác định hoặc lỗi.
5. return;: Trong hàm `main()`, nếu kiểu trả về là `int`, ta nên trả về một giá trị nguyên (thường là 0 để báo hiệu chương trình chạy thành công).
Do các lỗi trên, chương trình có thể không chạy được hoặc cho ra kết quả không xác định. Không có đáp án nào trong các lựa chọn phù hợp với hành vi thực tế của chương trình. Vì vậy, đáp án đúng nhất là "Kết quả khác".
Lời giải:
Đáp án đúng: D
Đoạn chương trình sử dụng `scanf` để đọc dữ liệu từ đầu vào chuẩn. Lỗi nằm ở chỗ định dạng `%c%d` trong `scanf`. Theo định dạng này, chương trình sẽ cố gắng đọc một ký tự vào biến `n` (kiểu `int`) và một số nguyên vào biến `c` (kiểu `char`).
Khi nhập "r 45", chương trình sẽ cố gắng đọc ký tự 'r' vào biến `n`. Do `n` là kiểu số nguyên, việc đọc ký tự 'r' vào `n` sẽ dẫn đến lỗi, `scanf` sẽ không thể chuyển đổi 'r' thành một số nguyên hợp lệ. Vì vậy, giá trị của `n` sẽ không được gán (hoặc được gán một giá trị không xác định tùy thuộc vào trình biên dịch).
Tiếp theo, `scanf` sẽ cố gắng đọc một số nguyên vào biến `c`. Vì việc đọc 'r' vào `n` đã thất bại, `scanf` sẽ dừng lại và không đọc thêm dữ liệu nào nữa.
Do đó, không có đáp án nào trong các lựa chọn là chính xác. Tuy nhiên, có một điểm quan trọng là mặc dù việc đọc sai định dạng có thể dẫn đến kết quả không mong muốn hoặc lỗi, nhưng trong trường hợp này chương trình vẫn sẽ tiếp tục chạy (mặc dù kết quả có thể không đúng như ý muốn). Đáp án D ("Kết quả khác") là đáp án gần đúng nhất trong trường hợp này vì các đáp án khác đều không mô tả chính xác tình huống xảy ra.
Tuy nhiên, điều quan trọng cần lưu ý là câu hỏi có vẻ như đang kiểm tra sự hiểu biết về lỗi định dạng trong `scanf`. Trong thực tế, trình biên dịch có thể đưa ra cảnh báo về việc sử dụng sai định dạng, nhưng chương trình vẫn sẽ được xây dựng. Khi chạy, `scanf` sẽ gặp lỗi và có thể không hoạt động như mong đợi.
Trong trường hợp này, không có đáp án nào hoàn toàn đúng. Tuy nhiên, theo cách hiểu thông thường, việc `scanf` không thể đọc dữ liệu theo đúng định dạng được xem là một dạng lỗi logic, dẫn đến kết quả không chính xác. Do đó, đáp án D ("Kết quả khác") là hợp lý nhất.
Tuy nhiên, cần lưu ý rằng nếu thứ tự đọc được đảo ngược lại thành `%d%c` thì chương trình sẽ báo lỗi khi biên dịch.
Lưu ý: Do không có đáp án chính xác tuyệt đối, và theo phân tích ở trên, đáp án gần đúng nhất là D. Tuy nhiên, cần hiểu rõ bản chất vấn đề là lỗi định dạng trong `scanf`.
Khi nhập "r 45", chương trình sẽ cố gắng đọc ký tự 'r' vào biến `n`. Do `n` là kiểu số nguyên, việc đọc ký tự 'r' vào `n` sẽ dẫn đến lỗi, `scanf` sẽ không thể chuyển đổi 'r' thành một số nguyên hợp lệ. Vì vậy, giá trị của `n` sẽ không được gán (hoặc được gán một giá trị không xác định tùy thuộc vào trình biên dịch).
Tiếp theo, `scanf` sẽ cố gắng đọc một số nguyên vào biến `c`. Vì việc đọc 'r' vào `n` đã thất bại, `scanf` sẽ dừng lại và không đọc thêm dữ liệu nào nữa.
Do đó, không có đáp án nào trong các lựa chọn là chính xác. Tuy nhiên, có một điểm quan trọng là mặc dù việc đọc sai định dạng có thể dẫn đến kết quả không mong muốn hoặc lỗi, nhưng trong trường hợp này chương trình vẫn sẽ tiếp tục chạy (mặc dù kết quả có thể không đúng như ý muốn). Đáp án D ("Kết quả khác") là đáp án gần đúng nhất trong trường hợp này vì các đáp án khác đều không mô tả chính xác tình huống xảy ra.
Tuy nhiên, điều quan trọng cần lưu ý là câu hỏi có vẻ như đang kiểm tra sự hiểu biết về lỗi định dạng trong `scanf`. Trong thực tế, trình biên dịch có thể đưa ra cảnh báo về việc sử dụng sai định dạng, nhưng chương trình vẫn sẽ được xây dựng. Khi chạy, `scanf` sẽ gặp lỗi và có thể không hoạt động như mong đợi.
Trong trường hợp này, không có đáp án nào hoàn toàn đúng. Tuy nhiên, theo cách hiểu thông thường, việc `scanf` không thể đọc dữ liệu theo đúng định dạng được xem là một dạng lỗi logic, dẫn đến kết quả không chính xác. Do đó, đáp án D ("Kết quả khác") là hợp lý nhất.
Tuy nhiên, cần lưu ý rằng nếu thứ tự đọc được đảo ngược lại thành `%d%c` thì chương trình sẽ báo lỗi khi biên dịch.
Lưu ý: Do không có đáp án chính xác tuyệt đối, và theo phân tích ở trên, đáp án gần đúng nhất là D. Tuy nhiên, cần hiểu rõ bản chất vấn đề là lỗi định dạng trong `scanf`.
Lời giải:
Đáp án đúng: A
Đoạn chương trình trên sử dụng vòng lặp `do...while` để đọc các ký tự từ bàn phím cho đến khi gặp ký tự '*'.
- `getchar()`: Hàm này đọc một ký tự từ đầu vào chuẩn (thường là bàn phím) và trả về ký tự đó.
- `do { ... } while (c != '*');`: Vòng lặp này sẽ thực hiện các lệnh bên trong nó ít nhất một lần, sau đó kiểm tra điều kiện `c != '*'`. Nếu điều kiện này đúng (tức là ký tự vừa nhập không phải là '*'), vòng lặp sẽ tiếp tục. Nếu điều kiện sai (tức là ký tự vừa nhập là '*'), vòng lặp sẽ kết thúc.
Như vậy, chương trình sẽ liên tục đọc các ký tự từ bàn phím cho đến khi người dùng nhập vào ký tự '*'.
- `getchar()`: Hàm này đọc một ký tự từ đầu vào chuẩn (thường là bàn phím) và trả về ký tự đó.
- `do { ... } while (c != '*');`: Vòng lặp này sẽ thực hiện các lệnh bên trong nó ít nhất một lần, sau đó kiểm tra điều kiện `c != '*'`. Nếu điều kiện này đúng (tức là ký tự vừa nhập không phải là '*'), vòng lặp sẽ tiếp tục. Nếu điều kiện sai (tức là ký tự vừa nhập là '*'), vòng lặp sẽ kết thúc.
Như vậy, chương trình sẽ liên tục đọc các ký tự từ bàn phím cho đến khi người dùng nhập vào ký tự '*'.
Lời giải:
Đáp án đúng: A
Toán tử n--
là toán tử giảm hậu tố (postfix decrement operator). Điều này có nghĩa là giá trị của biến n
được sử dụng trước trong biểu thức, sau đó giá trị của n
mới giảm đi 1.
Lời giải:
Đáp án đúng: C
Trong C/C++, phép toán một ngôi *
được sử dụng để truy cập giá trị tại địa chỉ mà con trỏ trỏ tới. Nó còn được gọi là toán tử giải tham chiếu (dereference operator).
!
là toán tử NOT logic.&
là toán tử lấy địa chỉ của một biến.- Đáp án D không chính xác vì đã có đáp án C đúng.
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