#CCBCHBAHAI0000104. Phân loại int a[n] theo C90/C99/C11/C17
Phân loại int a[n] theo C90/C99/C11/C17
Phân loại int a[n] theo C90/C99/C11/C17
Nguồn: Phước Hưng OJ
Phiên bản: Phước Hưng OJ Extended
Đề bài
Xét khai báo C
int a[n];
trong đó là số nguyên dương được xác định khi chương trình đang chạy, tức không phải integer constant expression. Khi đó đây là trường hợp variable length array (VLA) nếu chuẩn/ngôn ngữ triển khai hỗ trợ.
Trong bài này dùng ba nhãn:
NOT_STANDARD: cú pháp VLA không thuộc chuẩn C đó;VLA: VLA là tính năng chuẩn được yêu cầu bởi phiên bản chuẩn đó;OPTIONAL_VLA: chuẩn cho phép VLA nhưng implementation có thể không cung cấp hỗ trợ VLA.
Phân loại theo lộ trình Chương 32:
$$\begin{aligned} \text{C90} &\rightarrow \texttt{NOT\_STANDARD},\\ \text{C99} &\rightarrow \texttt{VLA},\\ \text{C11} &\rightarrow \texttt{OPTIONAL\_VLA},\\ \text{C17} &\rightarrow \texttt{OPTIONAL\_VLA}. \end{aligned}$$Input
Dòng đầu chứa số truy vấn . Dòng thứ hai chứa mã chuẩn, mỗi mã thuộc tập .
Output
Với mỗi mã chuẩn, in nhãn tương ứng trên một dòng.
Subtask
Subtask 1 (20 điểm): .
Subtask 2 (30 điểm): .
Subtask 3 (50 điểm): .
Ví dụ
Input
4
90 99 11 17
Output
NOT_STANDARD
VLA
OPTIONAL_VLA
OPTIONAL_VLA
Giải thích
C90 chưa có VLA; C99 chuẩn hóa VLA; trong C11 và C17, implementation được phép không hỗ trợ VLA.