Kết quả in ra màn hình của chương trình sau:
#include
void main() {
int i = 100;
printf(“ % c”, i);
};
#include
void main() {
int i = 100;
printf(“ % c”, i);
};
Trả lời:
Đáp án đúng: A
Chương trình C in ra một ký tự dựa trên giá trị số nguyên i. Trong đoạn mã C, biến i được gán giá trị 100. Lệnh `printf(“ % c”, i);` sử dụng định dạng `%c`, điều này có nghĩa là giá trị của `i` sẽ được hiểu là mã ASCII và ký tự tương ứng với mã ASCII đó sẽ được in ra. Mã ASCII 100 tương ứng với ký tự 'd'. Vì vậy, chương trình sẽ in ra 'd'.
Tổng hợp 600+ câu hỏi trắc nghiệm lập trình C có đáp án đầy đủ nhằm giúp các bạn dễ dàng ôn tập lại toàn bộ các kiến thức.
50 câu hỏi 60 phút
Câu hỏi liên quan
Lời giải:
Đáp án đúng: D
Chương trình có một số lỗi sau:
1. **`#define EOL‘\ n’`**: Dấu nháy đơn không đúng, phải là nháy đơn thẳng ('). Đúng phải là `#define EOL '\n'`. Tuy nhiên, hằng số này không được sử dụng trong chương trình.
2. **`char chu[80]`**: Mảng `chu` được khai báo nhưng không được khởi tạo giá trị. Điều này có nghĩa là nội dung của mảng này là rác.
3. **`int tong, dem;`**: `tong` và `dem` không được khởi tạo.
4. **`for (dem = 0; dem < tong; dem++);`**: Vòng lặp này sử dụng giá trị `tong` chưa được khởi tạo. Do đó, `tong` có thể có giá trị ngẫu nhiên rất lớn, hoặc rất nhỏ, dẫn đến vòng lặp có thể không chạy, hoặc chạy rất nhiều lần. Sau vòng lặp này, `tong` được gán bằng `dem`.
5. **`for (dem = 0; dem < tong; ++dem) putchar(toupper(chu[dem]));`**: Vòng lặp này duyệt qua mảng `chu` từ 0 đến `tong - 1`. Vì `chu` không được khởi tạo, `chu[dem]` chứa các giá trị rác. Hàm `toupper()` chuyển đổi kí tự thành chữ hoa (nếu có thể). Vì `chu` chứa rác nên kết quả in ra màn hình là không đoán trước được.
6. **`clrscr()`**: Hàm này chỉ hoạt động trên Turbo C++ hoặc Borland C++.
Vì có rất nhiều lỗi, chương trình có thể không chạy được, hoặc chạy nhưng in ra kết quả không xác định. Do đó, các đáp án A, B, và C đều không đúng. Đáp án chính xác 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 hàm `scanf` để đọc dữ liệu từ đầu vào chuẩn. Cú pháp `scanf(" %c %d", &n, &c);` có một lỗi quan trọng: thứ tự của `%c` (đọc ký tự) và `%d` (đọc số nguyên) bị đảo ngược so với thứ tự của các biến `n` (int) và `c` (char) trong danh sách các tham số truyền vào hàm `scanf`. Điều này có nghĩa là chương trình sẽ cố gắng đọc một ký tự vào biến `n` (biến số nguyên) và một số nguyên vào biến `c` (biến ký tự).
Khi nhập "r 45", chương trình sẽ cố gắng gán ký tự 'r' cho biến `n` kiểu `int`. Điều này sẽ dẫn đến việc `n` nhận một giá trị không mong muốn (thường là mã ASCII của 'r', nhưng không đảm bảo). Sau đó, chương trình sẽ cố gắng đọc '45' vào biến `c` kiểu `char`, điều này cũng sẽ không hoạt động như mong đợi vì kiểu dữ liệu không phù hợp.
Vì thứ tự chỉ định định dạng và biến không khớp, và chương trình cố gắng gán một ký tự cho một biến số nguyên, kết quả sẽ không phải là `n = 45` và `c = 'r'`. Do đó, đáp án B không đúng. Đáp án A cũng không đúng vì lý do tương tự.
Tuy nhiên, trong thực tế, cách chương trình xử lý việc gán sai kiểu này phụ thuộc vào trình biên dịch và hệ điều hành. Một số trình biên dịch có thể cảnh báo, nhưng chương trình vẫn có thể chạy, mặc dù với kết quả không mong muốn. Do đó, đáp án D ("Kết quả khác") có vẻ phù hợp nhất trong tình huống này, vì kết quả chắc chắn sẽ không phải là A hoặc B.
Tuy nhiên, cần lưu ý rằng theo chuẩn C, việc sử dụng sai định dạng trong `scanf` là một lỗi lập trình nghiêm trọng và có thể dẫn đến hành vi không xác định. Trong một số trường hợp, chương trình có thể gặp sự cố. Mặc dù đáp án D có vẻ gần đúng nhất, nhưng có thể lập luận rằng chương trình có "lỗi" theo nghĩa rộng.
Trong các kỳ thi, nên chọn đáp án phản ánh rõ ràng nhất lỗi trong code. Do đó, đáp án D (Kết quả khác) là đáp án chính xác nhất.
Lời giải:
Đáp án đúng: B
Trong C/C++, khi thực hiện phép trừ một con trỏ với một số nguyên, kết quả sẽ là một con trỏ cùng kiểu với con trỏ ban đầu. Phép trừ này thực chất là dịch chuyển con trỏ đó đi một số lượng phần tử nhất định trong bộ nhớ. Số nguyên được trừ sẽ được nhân với kích thước của kiểu dữ liệu mà con trỏ trỏ tới, sau đó mới thực hiện phép trừ địa chỉ. Do đó, đáp án B là đáp án chính xác.
Lời giải:
Đáp án đúng: D
Đoạn code sử dụng hai vòng lặp `for` lồng nhau. Vòng lặp ngoài chạy từ `i = 1` đến `i = 9`. Vòng lặp trong chạy từ `j = 1` đến `j = 9`. Bên trong vòng lặp trong, điều kiện `j % i == 0` được kiểm tra. Nếu điều kiện này đúng, chuỗi "Hello\n" được in ra màn hình.
Chúng ta cần đếm số lần điều kiện `j % i == 0` đúng.
- Khi `i = 1`, `j % 1 == 0` luôn đúng với mọi `j`, vậy "Hello" được in 9 lần.
- Khi `i = 2`, `j % 2 == 0` đúng khi `j = 2, 4, 6, 8`, vậy "Hello" được in 4 lần.
- Khi `i = 3`, `j % 3 == 0` đúng khi `j = 3, 6, 9`, vậy "Hello" được in 3 lần.
- Khi `i = 4`, `j % 4 == 0` đúng khi `j = 4, 8`, vậy "Hello" được in 2 lần.
- Khi `i = 5`, `j % 5 == 0` đúng khi `j = 5`, vậy "Hello" được in 1 lần.
- Khi `i = 6`, `j % 6 == 0` đúng khi `j = 6`, vậy "Hello" được in 1 lần.
- Khi `i = 7`, `j % 7 == 0` đúng khi `j = 7`, vậy "Hello" được in 1 lần.
- Khi `i = 8`, `j % 8 == 0` đúng khi `j = 8`, vậy "Hello" được in 1 lần.
- Khi `i = 9`, `j % 9 == 0` đúng khi `j = 9`, vậy "Hello" được in 1 lần.
Tổng cộng số lần in "Hello" là: 9 + 4 + 3 + 2 + 1 + 1 + 1 + 1 + 1 = 23.
Vậy đáp án đúng là D.
Lời giải:
Đáp án đúng: C
Phương án A:
- `fread(x+i++, sizeof(T), 1, f);` đọc một bản ghi từ tệp `f` vào vị trí `x+i` (tức là `x[i]`) và sau đó tăng `i` lên 1.
- `while (!feof(f))` lặp lại việc đọc cho đến khi gặp cuối tệp.
- `fclose(f);` đóng tệp.
Cách này có vẻ đúng, nhưng có một lỗi nhỏ: vòng lặp `while (!feof(f))` có thể đọc thêm một lần sau khi đã đến cuối tệp, vì `feof()` chỉ trả về true *sau khi* một thao tác đọc thất bại vì đã đến cuối tệp.
Phương án B:
- `fseek(f,0,SEEK_END);` di chuyển con trỏ tệp đến cuối tệp.
- `n=ftell(f)/sizeof(T);` tính số lượng bản ghi bằng cách lấy vị trí hiện tại của con trỏ tệp (tức là kích thước của tệp) chia cho kích thước của một bản ghi.
- `fseek(f,0,SEEK_SET);` di chuyển con trỏ tệp trở lại đầu tệp.
- `fread(x, sizeof(T), n, f);` đọc `n` bản ghi từ tệp vào mảng `x`.
- `fclose(f);` đóng tệp.
Cách này hiệu quả và chính xác hơn, vì nó xác định số lượng bản ghi trước khi đọc.
Do đó, phương án B đúng hơn phương án A. Vì A có thể đọc dư thừa 1 lần, nên A chưa chính xác hoàn toàn.
Vậy, D là đáp án đúng, vì A và B không hoàn toàn đú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

FORM.08: Bộ 130+ Biểu Mẫu Thống Kê Trong Doanh Nghiệp
136 tài liệu563 lượt tải

FORM.07: Bộ 125+ Biểu Mẫu Báo Cáo Trong Doanh Nghiệp
125 tài liệu585 lượt tải

FORM.06: Bộ 320+ Biểu Mẫu Hành Chính Thông Dụng
325 tài liệu608 lượt tải

FORM.05: Bộ 330+ Biểu Mẫu Thuế - Kê Khai Thuế Mới Nhất
331 tài liệu1010 lượt tải

FORM.04: Bộ 240+ Biểu Mẫu Chứng Từ Kế Toán Thông Dụng
246 tài liệu802 lượt tải

CEO.22: Bộ Tài Liệu Quy Trình Kiểm Toán, Kiểm Soát Nội Bộ Doanh Nghiệp
138 tài liệu417 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