Những tên biến nào dưới đây được viết đúng theo quy tắc đặt tên của ngôn ngữ lập trình C?
A.
diem toan
B.
3diemtoan
C.
_diemtoan
D.
-diemtoan
Đáp án
Quy tắc đặt tên biến trong C:
* Tên biến phải bắt đầu bằng một chữ cái (a-z, A-Z) hoặc dấu gạch dưới (_).
* Tên biến có thể chứa chữ cái, chữ số (0-9) và dấu gạch dưới.
* Tên biến phân biệt chữ hoa và chữ thường (phân biệt case).
* Tên biến không được trùng với các từ khóa (keywords) của ngôn ngữ C.
* Tên biến nên có ý nghĩa, dễ đọc và thể hiện mục đích sử dụng.
Dựa vào các quy tắc trên, ta có thể phân tích các đáp án:
* **A. diem toan:** Sai, vì tên biến chứa khoảng trắng.
* **B. 3diemtoan:** Sai, vì tên biến bắt đầu bằng chữ số.
* **C. _diemtoan:** Đúng, vì tên biến bắt đầu bằng dấu gạch dưới và tuân thủ các quy tắc khác.
* **D. -diemtoan:** Sai, vì tên biến bắt đầu bằng dấu trừ (-).
Quy tắc đặt tên biến trong C:
* Tên biến phải bắt đầu bằng một chữ cái (a-z, A-Z) hoặc dấu gạch dưới (_).
* Tên biến có thể chứa chữ cái, chữ số (0-9) và dấu gạch dưới.
* Tên biến phân biệt chữ hoa và chữ thường (phân biệt case).
* Tên biến không được trùng với các từ khóa (keywords) của ngôn ngữ C.
* Tên biến nên có ý nghĩa, dễ đọc và thể hiện mục đích sử dụng.
Dựa vào các quy tắc trên, ta có thể phân tích các đáp án:
* **A. diem toan:** Sai, vì tên biến chứa khoảng trắng.
* **B. 3diemtoan:** Sai, vì tên biến bắt đầu bằng chữ số.
* **C. _diemtoan:** Đúng, vì tên biến bắt đầu bằng dấu gạch dưới và tuân thủ các quy tắc khác.
* **D. -diemtoan:** Sai, vì tên biến bắt đầu bằng dấu trừ (-).
Biến địa phương (local variable) là biến được khai báo bên trong một hàm hoặc một thủ tục (bao gồm cả hàm `main()`). Phạm vi của biến địa phương giới hạn trong khối lệnh mà nó được khai báo. Các hàm hoặc thủ tục khác không thể truy cập trực tiếp vào biến địa phương của một hàm hoặc thủ tục khác. Do đó, đáp án A là chính xác nhất.
Các đáp án khác:
- B: Sai. Biến địa phương có thể được khai báo trong hàm `main()`.
- C: Sai. Biến địa phương có thể được khai báo trong bất kỳ hàm nào, không chỉ `main()`.
- D: Sai. Biến được khai báo bên ngoài các hàm (bao gồm cả `main()`) được gọi là biến toàn cục (global variable).
Đáp án đúng là D. “%p”. Trong ngôn ngữ C, xâu định dạng “%p” được sử dụng để in ra địa chỉ của một biến dưới dạng con trỏ (pointer). Các lựa chọn khác không đúng vì:
- “%u” dùng để in ra số nguyên không dấu (unsigned integer).
- “%e” dùng để in ra số thực dấu phẩy động ở dạng ký hiệu khoa học.
- “%o” dùng để in ra số nguyên ở hệ cơ số bát phân (octal).
Trong ngôn ngữ lập trình C (và các ngôn ngữ tương tự), xâu định dạng (format string) được sử dụng để định dạng dữ liệu đầu ra. Mỗi ký tự phần trăm (%) đi kèm với một ký tự khác sẽ tạo thành một đặc tả định dạng, cho biết kiểu dữ liệu nào sẽ được in ra.
- "%u" được dùng để in ra một số nguyên không dấu (unsigned integer).
- "%e" được dùng để in ra một số thực dưới dạng ký pháp khoa học (ví dụ: 1.23456e+05).
- "%d" hoặc "%i" được dùng để in ra một số nguyên có dấu (signed integer).
- "%p" được dùng để in ra một con trỏ (địa chỉ bộ nhớ).
Vì câu hỏi yêu cầu in ra một "số nguyên", cả "%u" và "%d" đều có thể được xem là đáp án đúng. Tuy nhiên, thông thường, "%d" được sử dụng phổ biến hơn khi muốn in ra một số nguyên nói chung (bao gồm cả số âm và số dương). Nếu muốn in số nguyên không âm thì dùng "%u". Trong trường hợp này, ta chọn "%d" vì nó tổng quát hơn.
Xâu định dạng "%e" được sử dụng để in ra một số thực có độ chính xác kép (double) ở dạng ký hiệu khoa học. Các xâu định dạng khác không phù hợp:
- "%u": Dùng cho số nguyên không dấu.
- "%o": Dùng cho số nguyên hệ bát phân.
- "%p": Dùng để in ra địa chỉ con trỏ (pointer).