Đâu là kết quả của đoạn mã sau:
struct Employee {
char Code[], name[]
long Salary;
};
Employee e1 = {
“
E089”,
“Hoang so”,
12000
}, e2 = e1;
printf(“ % ld”, el.Salary + e2 -> Salary);
struct Employee {
char Code[], name[]
long Salary;
};
Employee e1 = {
“
E089”,
“Hoang so”,
12000
}, e2 = e1;
printf(“ % ld”, el.Salary + e2 -> Salary);
Trả lời:
Đáp án đúng: C
Đoạn mã C này có một số lỗi nghiêm trọng, khiến nó không thể biên dịch và chạy đúng cách.
1. **Khai báo mảng `char Code[], name[]` không hợp lệ:** Trong C, khi khai báo một mảng ký tự (chuỗi) bên trong một `struct`, bạn cần chỉ định kích thước của mảng. Nếu không, trình biên dịch sẽ không biết cần cấp phát bao nhiêu bộ nhớ cho mảng đó. Việc khai báo `char Code[], name[]` là không hợp lệ. Nó nên được khai báo, ví dụ, là `char Code[10], name[50]` (với 10 và 50 là các kích thước ví dụ).
2. **Truy cập thành viên struct `el`:** Trong dòng `printf(" %ld", el.Salary + e2 -> Salary);`, `el` (chữ 'l' thường) có vẻ như là một lỗi chính tả. Nó phải là `e1`. Tuy nhiên, ngay cả khi sửa thành `e1`, toán tử `->` chỉ được sử dụng để truy cập các thành viên của một struct *thông qua một con trỏ*. `e2` là một biến struct trực tiếp, không phải con trỏ, vì vậy bạn nên sử dụng toán tử `.` để truy cập `Salary` của `e2`. Do đó, phải là `e2.Salary`.
Vì những lỗi này, đoạn mã sẽ không biên dịch, và do đó, không có kết quả nào được in ra. Vì vậy, đáp án đúng là "Đoạn mã bị lỗi".
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

FORM.08: Bộ 130+ Biểu Mẫu Thống Kê Trong Doanh Nghiệp

FORM.07: Bộ 125+ Biểu Mẫu Báo Cáo Trong Doanh Nghiệp

FORM.06: Bộ 320+ Biểu Mẫu Hành Chính Thông Dụng

FORM.05: Bộ 330+ Biểu Mẫu Thuế - Kê Khai Thuế Mới Nhất

FORM.04: Bộ 240+ Biểu Mẫu Chứng Từ Kế Toán Thông Dụng
