JavaScript is required

Đâ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);

A.
24000
B.
12000
C.
Đoạn mã bị lỗi
D.
Kết quả khác
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