Ngôn ngữ lập trình nào dưới đây là ngôn ngữ lập trình có cấu trúc?
A.
Ngôn ngữ Assembler
B.
Ngôn ngữ C và Pascal
C.
Ngôn ngữ Cobol
D.
a, b và c
Đáp án
Ngôn ngữ lập trình có cấu trúc là ngôn ngữ cho phép chia chương trình thành các khối nhỏ, dễ quản lý và bảo trì. C, Pascal và Cobol đều là các ngôn ngữ lập trình có cấu trúc. Assembler là ngôn ngữ bậc thấp, không có cấu trúc rõ ràng. Do đó, đáp án D là chính xác nhất.
Ngôn ngữ lập trình có cấu trúc là ngôn ngữ cho phép chia chương trình thành các khối nhỏ, dễ quản lý và bảo trì. C, Pascal và Cobol đều là các ngôn ngữ lập trình có cấu trúc. Assembler là ngôn ngữ bậc thấp, không có cấu trúc rõ ràng. Do đó, đáp án D là chính xác nhất.
Biến toàn cục (global variable) được khai báo bên ngoài tất cả các hàm, bao gồm cả hàm `main()`. Vì vậy, nó có phạm vi truy cập rộng nhất và có thể được truy cập và thay đổi từ bất kỳ hàm nào trong chương trình. Nếu `x` là một biến toàn cục và không phải là một con trỏ, thì miền nhớ (vùng nhớ) dành cho `x` có thể bị thay đổi bởi các thao tác với `x` trong bất kỳ hàm nào, kể cả hàm `main()`.
* **Phương án A:** Sai. Miền nhớ dành cho `x` là cố định trong suốt quá trình thực hiện chương trình, tuy nhiên giá trị tại miền nhớ đó có thể thay đổi.
* **Phương án B:** Sai. Biến toàn cục có thể được thay đổi bởi bất kỳ hàm nào.
* **Phương án C:** Đúng. Đây là đặc điểm của biến toàn cục.
* **Phương án D:** Sai. Giá trị của biến toàn cục có thể thay đổi.
Trong ngôn ngữ lập trình C, các phép gán rút gọn như `+=`, `*=`, `=` đều hợp lệ. Tuy nhiên, `&=` là phép AND bitwise kết hợp với phép gán. Phép AND bitwise chỉ được thực hiện trên các kiểu dữ liệu số nguyên (ví dụ: `int`, `char`), không được thực hiện trực tiếp trên số thực (ví dụ: `float`, `double`). Do đó, nếu `a` và `b` là số thực, biểu thức `(a&=b)` sẽ không đúng cú pháp.
Các đáp án khác:
- `(a+=b)`: Cộng `b` vào `a`, tương đương `a = a + b`.
- `(a*=b)`: Nhân `a` với `b`, tương đương `a = a * b`.
- `(a=b)`: Gán giá trị của `b` cho `a`.
Trong ngôn ngữ C, các toán tử gán rút gọn (compound assignment operators) kết hợp một toán tử số học hoặc bitwise với toán tử gán (=). Các toán tử như +=, -=, *=, /= đều hợp lệ. Tuy nhiên, toán tử dịch bit phải (>>) chỉ được sử dụng với kiểu số nguyên. Vì a và b là hai số thực (float hoặc double), toán tử dịch bit phải (>>) không được phép sử dụng.
Như vậy, (a >>= b) là biểu thức không hợp lệ khi a và b là số thực.
Câu hỏi yêu cầu xác định xâu định dạng (format string) nào được sử dụng để in ra một số thực có độ chính xác đơn trong ngôn ngữ C (hoặc các ngôn ngữ tương tự).
* **%u**: Được sử dụng để in ra số nguyên không dấu (unsigned integer).
* **%e**: Được sử dụng để in ra số thực dưới dạng ký hiệu khoa học (ví dụ: 1.2345e+02).
* **%f**: Được sử dụng để in ra số thực dưới dạng số thập phân dấu phẩy động (ví dụ: 123.45).
* **%o**: Được sử dụng để in ra số nguyên dưới dạng bát phân (octal).
Vì vậy, đáp án chính xác là **%f** vì nó được dùng để in số thực ở dạng thập phân dấu phẩy động, thường dùng để biểu diễn số thực có độ chính xác đơn.