320 Câu hỏi trắc nghiệm lập trình C có đáp án
Tổng hợp 320 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. Để ôn tập hiệu quả các bạn có thể ôn theo từng phần trong bộ câu hỏi này bằng cách trả lời các câu hỏi và xem lại đáp án và lời giải chi tiết. Sau đó các bạn hãy chọn tạo ra đề ngẫu nhiên để kiểm tra lại kiến thức đã ôn.
Chọn hình thức trắc nghiệm (50 câu/60 phút)
Chọn phần
-
Câu 1:
Cho một danh sách móc nối với các phần tử trong danh sách có kiểu S1 được định nghĩa như sau: struct S1{ int info; struct S1 * next;} *head;
Biết con trỏ “head” lưu địa chỉ của phần tử đầu tiên trong danh sách. Cho biết mục đích của câu lệnh sau: { head->next->next->info=111;};
A. Câu lệnh bị lỗi
B. Giá trị “info” trong phần tử thứ 3 đã bị thay đổi
C. Giá trị “info” trong phần tử thứ 2 đã bị thay đổi.
D. Giá trị “info” trong phần tử bất kì đã bị thay đổi.
-
Câu 2:
Cho một danh sách móc nối với các phần tử trong danh sách có kiểu S1 được định nghĩa như sau: struct S1{ int info; struct S1 * next;} *head;
Biết con trỏ “head” lưu địa chỉ của phần tử đầu tiên trong danh sách. Cho biết mục đích của câu lệnh sau: {(head->next)=(head->next)->next;};
A. Loại bỏ phần tử thứ nhất ra khỏi danh sách.
B. Loại bỏ phần tử thứ 2 ra khỏi danh sách.
C. Loại bỏ phần tử thứ 3 ra khỏi danh sách.
D. Câu lệnh bị lỗi.
-
Câu 3:
Một danh sách trong đó tất cả các thao tác chèn thực hiện tại một đầu, thao tác xóa được thực hiện tại đầu kia của danh sách gọi là:
A. Stack.
B. Queue;
C. Cây nhị phân
D. Cả 3 đáp án trên
-
Câu 4:
Đâu là phát biểu đúng về danh sách móc nối:
A. Chỉ có thể thêm phần tử mới vào đầu danh sách
B. Không thể thêm phần tử mới vào cuối danh sách
C. Có thể thêm phần tử mới vào vị trí bất kì trong danh sách
D. Không câu nào đúng
-
Câu 5:
Đâu là phát biểu đúng về danh sách:
A. Chỉ có thể xóa phần tử đầu tiên trong danh sách
B. Chỉ có thể xóa phần tử cuối cùng trong danh sách
C. Có thể xóa một phần tử tại vị trí bất kì trong danh sách
D. Tất cả đều sai
-
Câu 6:
Hàm dùng để cấp phát bộ nhớ động cho kiểu nhớ động do lập trình viên tự định nghĩa như (union, struct):
A. calloc();
B. malloc();
C. realloc();
D. Cả 3 đáp án trên
-
Câu 7:
Cho một danh sách móc nối với các phần tử trong danh sách có kiểu S1 được định nghĩa như sau. Biết con trỏ “*head” lưu địa chỉ của phần tử đầu tiên trong danh sách. Nhóm câu lệnh nào sau đây thêm một phần tử vào đầu danh sách:
struct S1 { int info; struct S1 * next; }* head;
A. p->next=head; head=p;
B. p->next=head; head->p; head=p->next;
C. head->next=p; p=head;
D. Không có câu nào đúng
-
Câu 8:
Cho một danh sách móc nối với các phần tử trong danh sách có kiểu S1 được định nghĩa như sau.
Biết con trỏ “*head” lưu địa chỉ của phần tử đầu tiên trong danh sách. Nhóm câu lệnh nào sau đây xóa phần tử đầu tiên ra khỏi danh sách:
struct S1 { int info; struct S1 * next; }* head;
A. head->next=head;
B. head=head->next;
C. head=head->next->next;
D. B và C đều đúng
-
Câu 9:
Đâu là phát biểu sai khi nói về danh sách liên kết:
A. Mỗi phần tử trong danh sách liên kết phải có ít nhất một trường dùng để lưu địa chỉ.
B. Sử dụng danh sách liên kết thường tiết kiệm bộ nhớ hơn dùng mảng.
C. Sử dụng danh sách liên kết thường tốn bộ nhớ hơn dùng mảng.
D. Tất cả các đáp án đều sai.
-
Câu 10:
Câu nào không nói đến ưu điểm của việc sử dụng cấu trúc:
A. Bạn có thể xử lí một cách hỗn hợp các kiểu dữ liệu trong một đơn vị.
B. Bạn có thể lưu dữ xâu kí tự có đọ dài khác nhau vào trong một biến cấu trúc.
C. Dữ liệu có thể lưu trữ trong một module và dưới dạng phân cấp.
D. Cần ít nhất một bộ nhớ cho cùng dữ liệu.
-
Câu 11:
Làm thế nào có thể biểu diễn phần tử “hoten” của SV1
struct SV { char hoten[20]; } SV1, * p; p = & SV1;
A. SV1.hoten;
B. p->hoten;
C. &hoten;
D. A và B đều đúng
-
Câu 12:
Đâu là phát biểu sai:
A. Có thể truyền tham số là một biến struct cho hàm.
B. Có thể truyền tham số là một biến con trỏ cho hàm.
C. Có thể truyền tham số là một biến con trỏ struct cho hàm.
D. Không thể truyền tham số là phần tử của struct cho hàm.
-
Câu 13:
Cho mảng A gồm các phần tử kiểu struct, phát biểu nào là đúng khi truy cập đến các trường của các phần tử:
A. A[chỉ số].tên_trường;
B. A.tên_trường;
C. &A.tên_trường;
D. &A[chỉ số].tên_trường;
-
Câu 14:
Không gian nhớ dùng để lưu trữ các node của danh sách liên kết kép:
A. Lưu trữ rởi rác trong bộ nhớ.
B. Luôn lưu trữ liên tục trong bộ nhớ
C. Lưu trữ theo kiểu phân trang.
D. Lưu trữ theo kiểu phân đoạn
-
Câu 15:
Khi thực hiện việc thêm một node x vào cây nhị phân tìm kiếm ta chỉ cần:
A. Tìm vị trí thích hợp cho nhánh cây con bên phải.
B. Tìm vị trí thích hợp cho x trên toàn bộ cây.
C. Tìm vị trí thích hợp cho nhánh cây con ở bên trái.
D. Không ý nào đúng.
-
Câu 16:
Dấu hiệu nào dưới đây cho biết node p của một danh sách liên kết đơn là node cuối cùng bên phải:
A. (p->info!=NULL);
B. (p->info==NULL);
C. (p->next!=NULL);
D. (p->next==NULL);
-
Câu 17:
Khi loại bỏ node x ở cây nhị phân tìm kiếm ta chỉ cần kiểm tra xem:
A. x có phải là node lá trái của cây nhị phân tìm kiếm hay không.
B. x có phải là node lá phải của cây nhị phân tìm kiếm hay không.
C. Sự tồn tại của x trên cây.
D. Cả 3 phương án a, b, c đều sai.
-
Câu 18:
Cơ chế nào dưới đây được cài đặt cho hàng đợi
A. FIFO
B. Round Robin
C. Tuần tự
D. FILO
-
Câu 19:
Dấu hiệu nào dưới đây cho biết danh sách liên kết đơn rỗng:
A. (p->right==NULL);
B. (p->info==NULL);
C. (p==NULL);
D. (p->next==NULL);
-
Câu 20:
Dấu hiệu nào cho biết node phải của p có cây con bên phải:
A. (p->right!=NULL);
B. (p->left!=NULL);
C. (p->right!=NULL)&&(p->right->right==NULL);
D. (p->right!=NULL)&&(p->right->right!=NULL);
-
Câu 21:
Cơ chế nào dưới đây được cài đặt cho Stack:
A. FILO
B. Tuần tự
C. Round Robin
D. FIFO
-
Câu 22:
Một cây nhị phân được gọi là đúng nếu:
A. Node gốc và tất cả các node trung gian đều có 2 node con.
B. Giá trị khóa của node gốc bao giờ cũng lớn hơn giá trị các khóa của nhánh cây con bên phải.
C. Giá trị khóa của node gốc bao giờ cũng lớn hơn giá trị các khóa của nhánh cây con bên trái.
D. Node gốc và các node trung gian đều có 2 node con và các node lá đều có mức giống nhau
-
Câu 23:
Khi thực hiện phép thêm một node lá x vào bên phải node p của cây nhị phân thông thường, ta cần:
A. Kiểm tra sự tồn tại của p và các lá bên phải p;
B. Kiểm tra sự tồn tại của node lá bên phải p
C. Kiểm tra sự tồn tại của node p.
D. Không cần thực hiện cả 3 điểu kiện nêu trong câu hỏi.
-
Câu 24:
Cho đoạn chương trình sau. Kết quả là
int a, * p, * q; float * t; a = 5; p = & a; p = q; t = p; printf(“ % d % f”, a, t);
A. 5-12
B. 5
C. Chương trình lỗi.
D. Kết quả khác.
-
Câu 25:
Số màu có thể biểu diễn trong chế độ đồ họa do yếu tố nào quy định:
A. Số bít tương ứng với 1 pixel.
B. Độ phân giải màn hình
C. Do kích thước màn hình
D. Không phải 3 yếu tố trên
-
Câu 26:
Trong chế độ 256 màu, số bít cho mỗi pixel là:
A. 5
B. 6
C. 7
D. 8
-
Câu 27:
Các file tối thiểu cần cho việc vẽ đồ họa:
A. GRAPH.H, *.BGI, *.CHR.
B. GRAPH.H, *.TXT, *.DOC.
C. *.BGI, *.TXT, *.DOC.
D. *.CHR, *.TXT, *.DOC.
-
Câu 28:
Một chương trình đồ họa gồm bao nhiêu đoạn:
A. 2
B. 3
C. 4
D. 5
-
Câu 29:
Trong chế độ graphic, gốc tọa độ là
A. Góc trên bên trái
B. Góc trên bên phải
C. Góc dưới bên trái
D. Góc dưới bên phải
-
Câu 30:
Ba màu cơ bản trong máy tính là:
A. RED, GREEN, BLUE
B. RED, YELLOW, BLUE
C. BLUE, YELLOW, BLUE
D. GREEN, RED, PING
-
Câu 31:
Hàm getpixel(int x, int y) dùng để làm gì:
A. Vẽ một điểm tại tọa độ (x,y);
B. Lấy giá trị màu của điểm tại tọa độ (x,y);
C. Vẽ một điểm tại vị trí con trỏ.
D. Cả 3 phương án đều sai.
-
Câu 32:
Sau khi hàm setwiewport(int x1, int y1, int x2, int y2, int clip); được thực hiện thì tọa độ (0,0) của tất cả các hàm vẽ sẽ là:
A. Góc trên phải của màn hình.
B. Góc trên phải của viewport.
C. Góc trên trái của màn hình.
D. Góc trên trái của viewport.
-
Câu 33:
Trong chế độ đồ họa, hàm nào thường được dùng để hiện nội dung xâu:
A. printf();
B. outtext(char far * textstring);
C. outtextxy(int x, int y, char far *textstring);
D. putchar();
-
Câu 34:
Trong bước khởi tạo đồ họa ta cần:
A. Xác định vi mạch
B. Chọn chế độ đồ họa.
C. Cả 2 phương án trên đều sai
D. Cả 2 phương án trên đều đúng
-
Câu 35:
Khẳng định nào dưới đây là sai:
A. Hàm moveto(int x, int y) di chuyển vị trí hiện tại của màn hình đồ họa tới điểm có tọa độ (x,y);
B. lineto(int x, int y) là hàm vẽ đường thẳng từ vị trí con trỏ đồ họa hiện tại tới điểm có tọa độ (x,y).
C. linerel(int x, int y) vẽ đường thẳng tử gốc tọa độ tới điểm có tọa độ (x,y);
D. line(int x1, int y1, int x2, int y2) vẽ đường thẳng nối liền 2 điểm có tọa độ (x1,y1) và (x2,y2);
-
Câu 36:
Hàm putpixel(int x, int y) dùng để làm gì?
A. Vẽ một điểm tại tọa độ (x,y);
B. Lấy màu của điểm có tọa độ (x,y);
C. Vẽ một điểm tại vị trí con trỏ.
D. Cả 3 phương án trên đều sai.
-
Câu 37:
Lệnh nào dùng để đóng chế độ đồ họa:
A. getch();
B. closegraph();
C. Cả 2 phương án trên đều sai.
D. Cả 2 phương án trên đều đúng.
-
Câu 38:
Hàm closegraph() dùng để làm gì:
A. Sẽ giải phóng hết các vùng nhớ giành cho đồ họa.
B. Dùng để dừng màn hình
C. Dùng để xóa màn hình.
D. Cả 3 phương án trên đều sai.
-
Câu 39:
Phát biểu nào là đúng khi nói về 2 hàm:
rectangle(int x1, int y1, int x2, int y2) và bar(int x1, int y1, int x2, int y2):
A. Cả 2 hàm đều vẽ hình chữ nhật.
B. Hàm thứ nhất chỉ vẽ đường viền hình chữ nhật, không tô màu bên trong còn hàm thứ 2 thì tô cả màu bên trong.
C. Hàm thứ 2 chỉ vẽ đường viền hình chữ nhật, không tô màu bên trong còn hàm thứ nhất thì tô cả màu bên trong.
D. Cả hai hàm đều vẽ hình chữ nhật và tô cả màu bên trong.
-
Câu 40:
Chế độ đồ họa bao gồm các vấn đề:
A. Bao nhiêu màu.
B. Gồm những màu gì.
C. Độ phân giải của màn hình là bao nhiêu.
D. Cả 3 phương án trên.
-
Câu 41:
Hàm setcolor(int color) làm nhiệm vụ gì:
A. Thiết lập màu nền.
B. Đặt màu vẽ hiện tại.
C. Cả 2 ý trên đều đúng.
D. Cả hai ý trên đều sai.
-
Câu 42:
Tham số clip trong hàm setviewport(int x1, int y1, int x2, int y2, int clip); qui định vấn đề gì:
A. Cho phép hiển thị hay không hiển thị các nét vẽ bên trong viewport.
B. Cho phép hiển thị hay không hiển thị các nét vẽ bên ngoài viewport.
C. Cả 2 đều đúng.
D. Cả 2 đều sai.
-
Câu 43:
Điểu gì là đúng nhất khi nói về hàm floodfill(int x, int y, int Border);
A. Dùng để tô màu hình tròn chứa điểm (x,y).
B. Dùng để tô màu hình chữ nhật chứa điểm (x,y).
C. Dùng để tô màu đa giác chứa điểm (x,y);
D. Dùng để tô màu miền kín bất kì chứa điểm (x,y);
-
Câu 44:
Trong chế độ đồ họa, hàm nào sau đây xác lập kiểu chữ, cỡ chữ:
A. outtextxy(int x, int y, char far * textstring);
B. outtext(char far *textstring);
C. settextstyle(int font, int direction, int charsize);
D. Cả 3 phương án trên.
-
Câu 45:
Cho đoạn chương trình sau. Biết kích thước kiểu char: 1 byte, float : 4 byte, int : 4 byte, double : 8 byte, long : 4 byte. Kết quả trả về sẽ là:
#include <stdio.h> #include <conio.h> int main() { printf("%d\t", sizeof(6.5)); printf("%d\t", sizeof(90000)); printf("%d", sizeof('A')); getch(); }
A. 8 4 1
B. 8 2 1
C. 4 4 1
D. Kết quả khác
-
Câu 46:
Cho đoạn chương trình sau, kết quả trả về sẽ là:
#include <stdio.h> int main() { double num = 5.2; int var = 5; printf("%d\t", sizeof(!num)); printf("%d\t", sizeof(var = 15 / 2)); printf("%d", var); return 0; }
A. 1 4 5
B. 1 4 7
C. 8 4 7
D. Kết quả khác
-
Câu 47:
Cho đoạn chương trình sau. Kết quả trả về là:
#include <stdio.h> int main() { int w = 3; int x = 31; int y = 10; double z = x / y % w; printf("%f\n", z); return 0; }
A. 1
B. 0
C. 0.1
D. 2
-
Câu 48:
Kết quả trả về của toán tử sau: Evaluate !(1 && !(0 || 1))
A. True
B. False
C. Không xác định
-
Câu 49:
Hàm duy nhất mà tất cả các chương trình C phải chứa là gì?
A. start()
B. system()
C. main()
D. program()
-
Câu 50:
Câu nào sau đây cho thấy cú pháp đúng cho câu lệnh if?
A. if expression
B. if { expression
C. if ( expression )
D. expression if