Tất cả câu hỏi

Ngân hàng câu hỏi trắc nghiệm có giải thích chi tiết.

260/11.033 câuCòn 10.773
241Which is a function in C language?6 lựa chọn
Ais_prime()
B#include()
Cint()
Dif()
Ereturn()
F2ndElement()
Lời giải
Đáp án đúng: "is_prime()". Hàm trong C là khối mã có tên do người lập trình đặt theo luật định danh: mở đầu bằng chữ cái hoặc dấu gạch dưới, tiếp theo là chữ, số hoặc gạch dưới, và không được trùng từ khoá; is_prime thoả hết nên là tên hàm hợp lệ, kiểu tên quen dùng cho hàm kiểm tra số nguyên tố. Dòng "#include()" không phải hàm mà là chỉ thị tiền xử lý, được xử lý trước khi biên dịch và chỉ để chèn nội dung một tệp tiêu đề. Tên "int()" lấy đúng từ khoá kiểu int làm tên, trình biên dịch không cho phép. Tên "if()" cũng là từ khoá, đó là lệnh rẽ nhánh của ngôn ngữ chứ không phải lời gọi hàm. Tên "return()" là từ khoá trả về giá trị, thêm cặp ngoặc cũng không biến nó thành hàm. Tên "2ndElement()" mở đầu bằng chữ số nên vi phạm luật định danh ngay ở ký tự đầu tiên.
Mở trang câu hỏi này →
242What the matter is the following C code?4 lựa chọncó code
Đề bài
#include <stdio.h>
int main() {
    int a=1,b=2,c=3;
    printf("%d %d %d");
    return 0;
}
AThe program outputs undefined values.
BThe program has compile errors but still prints 1 2 3
CThe program output 3 2 1.
DThe program runtime error.
Lời giải
Đáp án đúng: "The program outputs undefined values.". Hàm printf nhận số tham số biến thiên và không có cách nào tự kiểm tra xem người lập trình đã truyền đủ giá trị cho các đặc tả hay chưa; chuỗi định dạng ở đây đòi ba số nguyên nhưng không có tham số nào đi kèm, nên hàm vẫn đi lấy ở đúng những chỗ mà quy ước gọi hàm dành cho tham số thứ nhất, thứ hai, thứ ba và đọc ra rác còn sót trong thanh ghi hoặc trên ngăn xếp. Đó là hành vi không xác định, mỗi lần chạy có thể in ra số khác nhau. Kết luận "The program has compile errors but still prints 1 2 3" tự mâu thuẫn: có lỗi dịch thì không có bản chạy, mà ở đây trình biên dịch nhiều nhất chỉ cảnh báo. Kết luận "The program output 3 2 1." giả định printf tự tìm được các biến a, b, c rồi còn đảo thứ tự, việc ngôn ngữ không làm. Kết luận "The program runtime error." quá chắc tay: đọc rác thường chỉ in ra số vô nghĩa chứ không bắt buộc làm chương trình chết.
Mở trang câu hỏi này →
Đề bài
#include<stdio.h>
int main()
{
    const int a=5;
    if(a>3)
        a++;
        break;
    else
        a--;
    printf("%d",a);
    return 0;
}
ACompile time error
B6
C4
D5
Lời giải
Đáp án đúng: "Compile time error". Phạm vi khối do ngoặc nhọn quyết định, không do thụt lề: nhánh if ở đây không có ngoặc nhọn nên chỉ ôm đúng một lệnh là lệnh tăng a, còn lệnh break phía sau đã nằm ngoài if dù được thụt vào ngang hàng. Vì vậy khi gặp từ khoá else, trình biên dịch không còn if nào để ghép nên báo lỗi ngay. Mã này còn hai lỗi nữa: break chỉ hợp lệ trong vòng lặp hoặc trong switch, mà đây không có cái nào; và a khai báo const nên cả lệnh tăng lẫn lệnh giảm đều là ghi vào đối tượng chỉ đọc. Giá trị "6" giả định lệnh tăng chạy được trên một hằng rồi chương trình in ra sau đó. Giá trị "4" ứng với nhánh giảm chạy, nhưng điều kiện a lớn hơn 3 với a bằng 5 vốn đã đúng. Giá trị "5" giả định không nhánh nào chạy, trong khi vấn đề thật là chương trình không dịch nổi.
Mở trang câu hỏi này →
Đề bài
#include <stdio.h>
int main() {
    int i = 10;
    do {
        printf("%d ", i);
        i -= 2;
    } while (i >= 1);
    return 0;
}
A10 8 6 4 2
B10 8 6 4 2 0
C10 8 6 4 2 0 -2 -4
D10 9 8 7 6 5 4 3 2
Lời giải
Đáp án đúng: "10 8 6 4 2". Phép kiểm điều kiện của vòng lặp này nằm ở cuối thân, nên mỗi lượt diễn ra theo đúng thứ tự in xong, giảm đi, rồi mới so sánh. Biến i vào vòng với 10: in 10 rồi i thành 8, in 8 rồi i thành 6, in 6 rồi i thành 4, in 4 rồi i thành 2, in 2 rồi i thành 0; lúc này điều kiện i lớn hơn hoặc bằng 1 cho sai nên vòng lặp dừng. Dãy "10 8 6 4 2 0" cần thân chạy thêm một lượt với i bằng 0, nhưng giá trị 0 chỉ sinh ra ở cuối lượt cuối và điều kiện đã chặn trước khi kịp in. Dãy "10 8 6 4 2 0 -2 -4" đòi điều kiện cho phép số âm, trong khi mốc so sánh là 1. Dãy "10 9 8 7 6 5 4 3 2" ứng với bước giảm một đơn vị, còn lệnh i -= 2 ở đây lấy đi hai đơn vị mỗi lượt nên chỉ in các số chẵn.
Mở trang câu hỏi này →
ACompile time error
BLoop infinitely
CNo Output will be printed
DThe loop will not work
Lời giải
Đáp án đúng: "Compile time error". Câu hỏi viết thiếu một từ, phải hiểu là vòng while không có điều kiện lặp. Cú pháp của while trong C đòi bắt buộc một biểu thức điều khiển trong cặp ngoặc tròn, nên viết while với ngoặc rỗng là sai cú pháp: trình biên dịch báo lỗi và không sinh ra bản thực thi nào; muốn lặp mãi thì vẫn phải viết một biểu thức luôn đúng. Kết luận "Loop infinitely" là hành vi của while có điều kiện luôn khác 0, chẳng hạn hằng số 1, tức là vẫn có biểu thức chứ không phải để trống. Kết luận "No Output will be printed" giả định chương trình đã chạy rồi không in gì, trong khi ở đây chưa có chương trình nào để chạy. Kết luận "The loop will not work" cũng nói về lúc chạy và lại mơ hồ, không phân biệt được chuyện lỗi dịch với chuyện vòng lặp chạy không lần nào.
Mở trang câu hỏi này →
Afor ( Init1, Init2; Condition ; Task1, Task2);
Bfor ( Init1, Condition ,Task1);
Cfor (Condition ; Init1, Init2; Task1);
Dfor ( Init1; Init2; Condition ; Task2)
Lời giải

Đáp án đúng: "for ( Init1, Init2; Condition ; Task1, Task2); ". Cặp ngoặc của for luôn chia thành đúng ba phần bởi hai dấu chấm phẩy: phần khởi tạo chạy một lần khi vào vòng, phần điều kiện kiểm trước mỗi lần chạy thân, phần cập nhật chạy sau mỗi lần chạy thân. Muốn nhồi nhiều việc vào một phần thì dùng toán tử phẩy, nên hai khởi tạo và hai việc cập nhật viết cách nhau bằng dấu phẩy là hợp lệ; dấu chấm phẩy ngay sau ngoặc đóng chỉ làm thân rỗng, vẫn dịch được. Khuôn "for ( Init1, Condition ,Task1); " chỉ dùng dấu phẩy nên cả ngoặc trở thành một biểu thức duy nhất, trình biên dịch không tìm ra điều kiện lặp. Khuôn "for (Condition ; Init1, Init2; Task1); " đảo chỗ: vế đầu bị tính một lần rồi bỏ, còn phần khởi tạo lại bị dùng làm điều kiện. Khuôn "for ( Init1; Init2; Condition ; Task2)"có tới ba dấu chấm phẩy, tức bốn phần, vượt khuôn mà ngôn ngữ cho phép.

Mở trang câu hỏi này →
Ado{ statements; } while(condition) ;
Bdo while(condition) { statements;}
Cdo{ statements; } while (condition)
Ddo( statements;) while (condition) ;
Lời giải

Đáp án đúng: "do{ statements; } while(condition) ; ". Vòng do-while chạy thân trước rồi mới kiểm điều kiện, và cả cấu trúc đó được ngôn ngữ coi là một lệnh duy nhất, nên bắt buộc phải kết thúc bằng dấu chấm phẩy ngay sau ngoặc điều kiện; thân có nhiều lệnh thì gom trong cặp ngoặc nhọn. Khuôn "do

Lời giải
while(condition) {
  statements;
}

" đặt điều kiện trước thân, thành ra do không có thân nào đi kèm còn khối phía sau trở thành một khối rời, sai hẳn trật tự của cấu trúc. Khuôn "do{ statements; } while (condition)" đúng mọi thứ trừ dấu chấm phẩy kết thúc, mà thiếu nó thì trình biên dịch coi lệnh chưa viết xong và báo lỗi cú pháp. Khuôn "do( statements;) while (condition) ; " dùng ngoặc tròn để gom lệnh, nhưng trong C chỉ cặp ngoặc nhọn mới tạo được khối lệnh, ngoặc tròn chỉ dành cho biểu thức và danh sách tham số.

Mở trang câu hỏi này →
Awhile (condition) {...}
Bwhile (initialization; condition) {...}
Cwhile (condition; increment) {...}
Dwhile (initialization; increment; condition) {...}
Lời giải

Đáp án đúng: "

Lời giải
while (condition) {
  ...
}

". Lệnh while trong C chỉ nhận duy nhất một biểu thức trong cặp ngoặc tròn; biểu thức đó được tính trước mỗi lần chạy thân và vòng lặp còn tiếp khi giá trị khác 0, nên mọi việc khởi tạo phải làm trước vòng lặp còn việc cập nhật phải nằm trong thân. Khuôn "

Lời giải
while (initialization; condition) {
  ...
}

" đưa phần khởi tạo vào trong ngoặc, đó là thành phần riêng của for, hơn nữa dấu chấm phẩy không được phép xuất hiện trong ngoặc điều kiện. Khuôn "

Lời giải
while (condition; increment) {
  ...
}

" mắc đúng lỗi ấy: phần tăng giảm phải là một lệnh trong thân chứ không phải vế thứ hai của điều kiện. Khuôn "

Lời giải
while (initialization; increment; condition) {
  ...
}

" là khuôn ba phần của for và còn xếp sai trật tự, vì trong for thì điều kiện đứng giữa còn phần cập nhật đứng cuối.

Mở trang câu hỏi này →
A5
B22
C18
D25
E28
Lời giải
Đáp án đúng: "25". Hằng 0x11 viết ở hệ mười sáu nên có giá trị 17 với dãy bit 10001; hằng 010 mở đầu bằng chữ số 0 nên C đọc là hệ tám, giá trị 8 với dãy bit 01000. Phép hoặc theo bit xét từng cặp bit và bật kết quả khi có ít nhất một bên bật, cho 11001, tức 25. Một tính chất giúp loại nhanh: phép hoặc chỉ bật thêm bit, không bao giờ tắt bit đang bật, nên kết quả không thể nhỏ hơn 17. Vì thế giá trị "5" bị loại ngay, nó còn nhỏ hơn cả toán hạng thứ nhất. Giá trị "22" có dãy bit 10110, vừa tắt mất bit thấp nhất mà 17 đang bật, vừa bật bit giá trị 4 mà không toán hạng nào bật. Giá trị "18" có dãy bit 10010, cũng tắt bit thấp nhất của 17 nên không thể là kết quả. Giá trị "28" có dãy bit 11100, mất bit thấp nhất và tự sinh bit giá trị 4, đó là kiểu sai do cộng dồn chứ không phải do lấy hoặc theo bit.
Mở trang câu hỏi này →
Đề bài
#include<stdio.h>
#include<ctype.h>
int main()
{
    char a[] = "hello world";
    int i = 0;
    while (!isspace(a[i]))
        i++;
    printf("%d, %c", i, a[i-1]);
    return 0;
}
A0, h
B5, o
C5,
D5, w
Lời giải
Đáp án đúng: "5, o". Mảng a chứa chuỗi hello world, chỉ số đếm từ 0 nên a[0] là h cho tới a[4] là o, còn a[5] là dấu cách. Vòng while còn chạy khi isspace(a[i]) trả về 0, nghĩa là còn ký tự thường thì i cứ tăng: i lần lượt qua 0, 1, 2, 3, 4 rồi thành 5; tại i bằng 5 hàm isspace gặp dấu cách nên trả về giá trị khác 0, phép phủ định cho sai và vòng lặp dừng với i bằng 5. Lệnh in xuất ra i là 5 rồi tới a[i-1] tức a[4] là o. Kết quả "0, h" chỉ xảy ra nếu ký tự đầu tiên đã là khoảng trắng, mà khi đó a[i-1] còn đọc ra ngoài mảng. Kết quả "5," ứng với việc in a[5] là dấu cách, nhưng mã in a[i-1] chứ không phải a[i]. Kết quả "5, w" ứng với a[6], ký tự ngay sau dấu cách, lệch một vị trí so với chỗ mà lệnh in thật sự lấy.
Mở trang câu hỏi này →
Astring a;
Bfloat a = 3e2;
Cint* a;
Dfloat *a;
Echar * a;
Lời giải
Đáp án đúng: "string a;". C không có kiểu chuỗi dựng sẵn; một chuỗi trong C là mảng char kết thúc bằng ký tự có mã 0, vì vậy tên kiểu string không tồn tại trong ngôn ngữ và dòng khai báo đó chỉ dịch được nếu chính người lập trình tạo ra cái tên ấy bằng typedef hoặc struct. Khai báo "float a = 3e2;" hợp lệ, vì 3e2 là cách viết khoa học của 300.0, một hằng số thực. Khai báo "int* a;" hợp lệ, dấu sao viết sát tên kiểu chỉ là cách trình bày, trình biên dịch vẫn đọc ra con trỏ tới int. Khai báo "float *a;" cũng vậy, khoảng trắng quanh dấu sao không mang nghĩa nào với bộ phân tích cú pháp. Khai báo "char * a;" là con trỏ tới char, dạng quen dùng để trỏ vào chuỗi, hoàn toàn đúng cú pháp. Bốn dòng vừa nêu đều là khai báo chuẩn, chỉ cái tên kiểu không hề tồn tại mới bị loại.
Mở trang câu hỏi này →
AThe color of the variable
BHow much space the variable needs in memory
CHow fast the variable runs
DThe name of the variable
Lời giải
Đáp án đúng: "How much space the variable needs in memory". Khi khai báo một biến, kiểu dữ liệu là thứ nói cho trình biên dịch biết phải dành bao nhiêu byte cho biến đó, đồng thời quyết định cách diễn giải dãy bit ấy và tập phép toán hợp lệ trên nó; cùng một ô nhớ bốn byte có thể là số nguyên có dấu hoặc số thực tuỳ kiểu đã khai. Mô tả "The color of the variable" không mang nghĩa nào trong C, biến là một vùng nhớ chứ không phải đối tượng hiển thị. Mô tả "How fast the variable runs" lẫn lộn khái niệm: biến không chạy, tốc độ là chuyện của mã máy sinh ra cho các phép toán, dù kiểu rộng hơn có thể khiến phép tính tốn thêm lệnh. Mô tả "The name of the variable" lẫn tên với kiểu: tên do người lập trình đặt và chỉ là nhãn cho vị trí nhớ, hai biến khác tên vẫn có thể cùng kiểu, còn một biến thì không thể có hai kiểu.
Mở trang câu hỏi này →
Đề bài
    #include <stdio.h>
    int main()
    {
        int a = 1;
        switch (a)
        case 1:
            printf("%d", a);
        case 2:
            printf("%d", a);
        case 3:
            printf("%d", a);
        return 0;
}
ANo error, output is 1111
BNo error, output is 1
CCompile time error, no break statements
DCompile time error, case label outside switch statement
Lời giải
Đáp án đúng: "Compile time error, case label outside switch statement". Phạm vi của một khối do ngoặc nhọn quyết định, không do thụt lề: sau switch (a) ở đây không có ngoặc nhọn nào, nên thân của switch chỉ ôm đúng một lệnh, và lệnh đó là lệnh mang nhãn case 1 kèm lời gọi in giá trị a. Hai nhãn case 2 và case 3 viết tiếp phía sau đã nằm ngoài thân switch dù được thụt vào, mà nhãn case chỉ hợp lệ bên trong một switch, nên trình biên dịch dừng với lỗi nhãn case nằm ngoài lệnh switch. Kết luận "No error, output is 1111" sai cả hai mặt: chương trình không dịch được, và trong mã cũng chỉ có ba lệnh in. Kết luận "No error, output is 1" cũng giả định dịch được, hơn nữa nếu các nhãn đều nằm trong thân switch thì do không có break nên các nhánh sau vẫn chạy tiếp. Kết luận "Compile time error, no break statements" đúng chuyện có lỗi nhưng sai nguyên nhân: thiếu break không phải lỗi, đó là hành vi rơi xuống nhánh dưới mà chuẩn cho phép.
Mở trang câu hỏi này →
Aif
Bswitch
Cwhile
Dfor
Lời giải
Đáp án đúng: "switch". Lệnh switch tính một biểu thức nguyên rồi so khớp giá trị ấy với các hằng ghi ở từng nhãn case, nhờ đó nhiều trường hợp rời rạc của cùng một biến được xếp cạnh nhau thành một bảng dễ đọc; trình biên dịch còn có thể dựng bảng nhảy để tới thẳng nhánh đúng thay vì thử lần lượt. Lệnh "if" cũng rẽ nhánh được nhưng mỗi lần chỉ xét một biểu thức đúng hoặc sai, muốn phủ nhiều giá trị thì phải viết chuỗi else if dài, lặp lại tên biến và mất hẳn dạng bảng. Lệnh "while" là vòng lặp kiểm điều kiện trước mỗi lần chạy, nhiệm vụ của nó là lặp lại công việc chứ không phải chọn một nhánh trong nhiều nhánh. Lệnh "for" cũng là vòng lặp, chỉ gói sẵn phần khởi tạo, điều kiện và cập nhật trong một cặp ngoặc; dùng nó để chọn trường hợp là đi lệch công dụng của cấu trúc.
Mở trang câu hỏi này →
Astrcat()
Bstrcpy()
Cputs()
Dscanf()
Lời giải
Đáp án đúng: "strcpy()". Trong C, phép gán không chép được nội dung mảng ký tự, nên muốn nhân bản một chuỗi phải tự chạy vòng lặp hoặc gọi hàm chuyên dụng; strcpy đi từ byte đầu của chuỗi nguồn, ghi sang vùng đích cho tới khi chép xong ký tự kết thúc chuỗi, nhờ đó vùng đích trở thành một chuỗi hợp lệ. Hàm "strcat()" cũng ghi vào đích nhưng là nối thêm: nó bỏ qua phần nội dung cũ, bắt đầu ghi đúng tại ký tự kết thúc của đích, nên không thay thế được việc chép. Hàm "puts()" chỉ đẩy một chuỗi ra màn hình kèm ký tự xuống dòng, không tạo bản sao nào trong bộ nhớ. Hàm "scanf()" là hàm đọc dữ liệu có định dạng, nguồn của nó là dòng nhập từ bàn phím chứ không phải một chuỗi đã có trong chương trình, nên nó không làm việc nhân bản nội dung giữa hai vùng nhớ.
Mở trang câu hỏi này →
A1
B0
C-1
Lời giải
Đáp án đúng: "-1". Hàm strcmp so sánh hai chuỗi theo từng byte cho tới vị trí đầu tiên khác nhau rồi trả về dấu của hiệu hai mã ký tự tại vị trí đó. Hai chuỗi abcdef và abdc trùng nhau ở hai ký tự đầu, đến vị trí thứ ba thì một bên là c có mã 99, bên kia là d có mã 100, hiệu là số âm nên hàm trả về giá trị âm, và trong danh sách chỉ có đúng một số âm. Giá trị "1" ứng với trường hợp chuỗi thứ nhất lớn hơn theo thứ tự từ điển, tức ký tự khác nhau đầu tiên của nó phải có mã lớn hơn, điều không xảy ra ở đây. Giá trị "0" chỉ xuất hiện khi hai chuỗi giống nhau hoàn toàn kể cả độ dài, còn abcdef và abdc đã lệch ngay ký tự thứ ba nên hàm dừng tại đó mà không cần xét phần còn lại. Bản chất cần nhớ: chuẩn C chỉ bảo đảm dấu của kết quả, trị tuyệt đối do thư viện quyết định, nên luôn đọc kết quả theo dấu.
Mở trang câu hỏi này →
Acopy strings
Bcontcatenate (joins) two strings
Ccompare two strings
Lời giải
Đáp án đúng: "copy strings". Hàm strcpy trong string.h nhận con trỏ đích rồi con trỏ nguồn, sao chép lần lượt từng byte của chuỗi nguồn sang vùng nhớ đích và chép luôn ký tự kết thúc chuỗi, nên sau lệnh gọi thì vùng đích mang đúng nội dung của chuỗi nguồn; chính cái tên cpy đã là viết tắt của copy. Cách hiểu "contcatenate (joins) two strings" mô tả việc nối hai chuỗi, đó là việc của strcat: hàm đó đi tìm ký tự kết thúc của chuỗi đích rồi ghi tiếp chuỗi nguồn từ chỗ ấy, giữ lại nội dung cũ, khác hẳn kiểu ghi đè từ byte đầu tiên của strcpy. Cách hiểu "compare two strings" mô tả việc so sánh, đó là việc của strcmp: hàm này không ghi gì vào bộ nhớ mà chỉ trả về số nguyên âm, bằng không hay dương theo thứ tự từ điển. Bản chất phải nhớ là C không có kiểu chuỗi thật, strcpy chỉ chép byte nên vùng đích phải tự đủ chỗ cho cả ký tự kết thúc.
Mở trang câu hỏi này →
ADataType ArrayName[NumberOfElements];
BArrayName DataType[NumberOfElements];
CDataType[NumberOfElements] ArrayName;
D[NumberOfElements] DataType ArrayName;
Lời giải
Đáp án đúng: "DataType ArrayName[NumberOfElements];". Khai báo mảng tĩnh đi theo đúng lối đọc khai báo của C: tên kiểu đứng trước cho biết mỗi phần tử trông thế nào, rồi tên biến, rồi số phần tử đặt trong cặp ngoặc vuông ngay sau tên; từ hai thông tin đó trình biên dịch tính ra tổng số byte phải dành và bước nhảy giữa các phần tử. Ý "ArrayName DataType[NumberOfElements];" sai vì tên biến bị đặt lên trước tên kiểu, trật tự này trình biên dịch không hiểu. Ý "DataType[NumberOfElements] ArrayName;" sai vì cặp ngoặc vuông phải gắn vào tên biến chứ không gắn vào tên kiểu, đó là cú pháp của một số ngôn ngữ khác. Ý "[NumberOfElements] DataType ArrayName;" sai vì không có khai báo nào trong C được mở đầu bằng cặp ngoặc vuông.
Mở trang câu hỏi này →
259What will be the output of the C program?4 lựa chọncó code
Đề bài
char temp;
char arr[10] = {1, 2, 3, 4, 5, 6, 7, 8};
temp = (arr + 1)[2];
printf("%d\n", temp);
A1
B2
C3
D4
Lời giải
Đáp án đúng: "4". Cách viết chỉ số trong C chỉ là đường tắt của phép tính trên con trỏ: viết x[i] đồng nghĩa với lấy nội dung tại x cộng i. Vì vậy (arr + 1)[2] chính là lấy nội dung tại arr cộng 1 cộng 2, tức là arr[3]. Mảng được khởi tạo bằng các số từ 1 đến 8 nên arr[3] mang giá trị 4; kiểu phần tử là char nhưng các giá trị khởi tạo là số nguyên nhỏ, và đặc tả %d in ra số 4 chứ không in ký tự. Ý "1" sai vì 1 nằm ở arr[0], giá trị đó chỉ ra nếu bỏ cả hai lượng cộng. Ý "2" sai vì 2 nằm ở arr[1], ứng với việc chỉ cộng 1 mà bỏ mất chỉ số 2. Ý "3" sai vì 3 nằm ở arr[2], đó là kết quả nếu quên lượng cộng 1 và chỉ đọc arr[2].
Mở trang câu hỏi này →
AChanging from one form of representation to another
BA category of data that represents individual, non-complex elements such as integers, floating-point numbers, and characters
CPerforming operations and expressions on data
DStoring a collection of elements accessible by an index or a key
Lời giải
Đáp án đúng: "A category of data that represents individual, non-complex elements such as integers, floating-point numbers, and characters". Kiểu dữ liệu đơn giản là những kiểu mà mỗi giá trị là một đơn vị trọn vẹn, không tách ra thành các thành phần nhỏ hơn có tên riêng, và được ngôn ngữ dựng sẵn cùng bộ phép toán của nó. Chúng đứng đối lập với kiểu có cấu trúc như mảng hay struct, nơi một giá trị gom nhiều phần tử. Ý "Changing from one form of representation to another" sai vì đó mô tả việc chuyển đổi biểu diễn hoặc chuyển kiểu, một hành động chứ không phải một nhóm kiểu. Ý "Performing operations and expressions on data" sai vì đó nói về phép toán và biểu thức, tức cách xử lý dữ liệu. Ý "Storing a collection of elements accessible by an index or a key" sai vì đó đúng là định nghĩa của kiểu có cấu trúc, trái hẳn tính không phức hợp mà câu hỏi nhắc tới.
Mở trang câu hỏi này →