320 Câu hỏi trắc nghiệm lập trình C có đáp án - Phần 5
50 câu hỏi
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;};
Câu lệnh bị lỗi
Giá trị “info” trong phần tử thứ 3 đã bị thay đổi
Giá trị “info” trong phần tử thứ 2 đã bị thay đổi
Giá trị “info” trong phần tử bất kì đã bị thay đổi.
Chọn đáp án B
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;};
Loại bỏ phần tử thứ nhất ra khỏi danh sách.
Loại bỏ phần tử thứ 2 ra khỏi danh sách.
Loại bỏ phần tử thứ 3 ra khỏi danh sách.
Câu lệnh bị lỗi.
Chọn đáp án B
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à:
Stack.
Queue;
Cây nhị phân
Cả 3 đáp án trên
Chọn đáp án B
Đâu là phát biểu đúng về danh sách móc nối:
Chỉ có thể thêm phần tử mới vào đầu danh sách
Không thể thêm phần tử mới vào cuối danh sách
Có thể thêm phần tử mới vào vị trí bất kì trong danh sách
Không câu nào đúng
Chọn đáp án C
Đâu là phát biểu đúng về danh sách:
Chỉ có thể xóa phần tử đầu tiên trong danh sách
Chỉ có thể xóa phần tử cuối cùng trong danh sách
Có thể xóa một phần tử tại vị trí bất kì trong danh sách
Tất cả đều sai
Chọn đáp án C
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):
calloc();
malloc();
realloc();
Cả 3 đáp án trên
Chọn đáp án D
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;
p->next=head; head=p;
p->next=head; head->p; head=p->next;
head->next=p; p=head;
Không có câu nào đúng
Chọn đáp án A
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;
head->next=head;
head=head->next;
head=head->next->next;
B và C đều đúng
Chọn đáp án B
Đâu là phát biểu sai khi nói về danh sách liên kết:
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ỉ.
Sử dụng danh sách liên kết thường tiết kiệm bộ nhớ hơn dùng mảng.
Sử dụng danh sách liên kết thường tốn bộ nhớ hơn dùng mảng.
Tất cả các đáp án đều sai.
Chọn đáp án C
Câu nào không nói đến ưu điểm của việc sử dụng cấu trúc:
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ạ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.
Dữ liệu có thể lưu trữ trong một module và dưới dạng phân cấp.
Cần ít nhất một bộ nhớ cho cùng dữ liệu.
Chọn đáp án D
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;
SV1.hoten;
p->hoten;
&hoten;
A và B đều đúng
Chọn đáp án D
Đâu là phát biểu sai:
Có thể truyền tham số là một biến struct cho hàm.
Có thể truyền tham số là một biến con trỏ cho hàm.
Có thể truyền tham số là một biến con trỏ struct cho hàm.
Không thể truyền tham số là phần tử của struct cho hàm.
Chọn đáp án D
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[chỉ số].tên_trường;
A.tên_trường;
&A.tên_trường;
&A[chỉ số].tên_trường;
Chọn đáp án A
Không gian nhớ dùng để lưu trữ các node của danh sách liên kết kép:
Lưu trữ rởi rác trong bộ nhớ.
Luôn lưu trữ liên tục trong bộ nhớ
Lưu trữ theo kiểu phân trang.
Lưu trữ theo kiểu phân đoạn
Chọn đáp án A
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:
Tìm vị trí thích hợp cho nhánh cây con bên phải.
Tìm vị trí thích hợp cho x trên toàn bộ cây
Tìm vị trí thích hợp cho nhánh cây con ở bên trái.
Không ý nào đúng.
Chọn đáp án B
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:
(p->info!=NULL);
(p->info==NULL);
(p->next!=NULL);
(p->next==NULL);
Chọn đáp án D
Khi loại bỏ node x ở cây nhị phân tìm kiếm ta chỉ cần kiểm tra xem:
x có phải là node lá trái của cây nhị phân tìm kiếm hay không.
x có phải là node lá phải của cây nhị phân tìm kiếm hay không.
Sự tồn tại của x trên cây.
Cả 3 phương án a, b, c đều sai.
Chọn đáp án D
Cơ chế nào dưới đây được cài đặt cho hàng đợi
FIFO
Round Robin
Tuần tự
FILO
Chọn đáp án A
Dấu hiệu nào dưới đây cho biết danh sách liên kết đơn rỗng:
(p->right==NULL);
(p->info==NULL);
(p==NULL);
(p->next==NULL);
Chọn đáp án C
Dấu hiệu nào cho biết node phải của p có cây con bên phải:
(p->right!=NULL);
(p->left!=NULL);
(p->right!=NULL)&&(p->right->right==NULL);
(p->right!=NULL)&&(p->right->right!=NULL);
Chọn đáp án D
Cơ chế nào dưới đây được cài đặt cho Stack:
FILO
Tuần tự
Round Robin
FIFO
Chọn đáp án A
Một cây nhị phân được gọi là đúng nếu:
Node gốc và tất cả các node trung gian đều có 2 node con.
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.
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.
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
Chọn đáp án A
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:
Kiểm tra sự tồn tại của p và các lá bên phải p;
Kiểm tra sự tồn tại của node lá bên phải p
Kiểm tra sự tồn tại của node p.
Không cần thực hiện cả 3 điểu kiện nêu trong câu hỏi.
Chọn đáp án A
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);
5-12
5
Chương trình lỗi.
Kết quả khác.
Chọn đáp án C
Số màu có thể biểu diễn trong chế độ đồ họa do yếu tố nào quy định:
Số bít tương ứng với 1 pixel
Độ phân giải màn hình
Do kích thước màn hình
Không phải 3 yếu tố trên
Chọn đáp án A
Trong chế độ 256 màu, số bít cho mỗi pixel là:
5
6
7
8
Chọn đáp án D
Các file tối thiểu cần cho việc vẽ đồ họa:
GRAPH.H, *.BGI, *.CHR.
GRAPH.H, *.TXT, *.DOC
*.BGI, *.TXT, *.DOC
*.CHR, *.TXT, *.DOC.
Chọn đáp án A
Một chương trình đồ họa gồm bao nhiêu đoạn:
2
3
4
5
Chọn đáp án B
Trong chế độ graphic, gốc tọa độ là
Góc trên bên trái
Góc trên bên phải
Góc dưới bên trái
Góc dưới bên phải
Chọn đáp án A
Ba màu cơ bản trong máy tính là:
RED, GREEN, BLUE
RED, YELLOW, BLUE
BLUE, YELLOW, BLUE
GREEN, RED, PING
Chọn đáp án A
Hàm getpixel(int x, int y) dùng để làm gì:
Vẽ một điểm tại tọa độ (x,y);
Lấy giá trị màu của điểm tại tọa độ (x,y);
Vẽ một điểm tại vị trí con trỏ.
Cả 3 phương án đều sai.
Chọn đáp án B
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à:
Góc trên phải của màn hình.
Góc trên phải của viewport.
Góc trên trái của màn hình.
Góc trên trái của viewport.
Chọn đáp án D
Trong chế độ đồ họa, hàm nào thường được dùng để hiện nội dung xâu:
printf();
outtext(char far * textstring);
outtextxy(int x, int y, char far *textstring);
putchar();
Chọn đáp án C
Trong bước khởi tạo đồ họa ta cần:
Xác định vi mạch
Chọn chế độ đồ họa.
Cả 2 phương án trên đều sai
Cả 2 phương án trên đều đúng
Chọn đáp án D
Khẳng định nào dưới đây là sai:
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);
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).
linerel(int x, int y) vẽ đường thẳng tử gốc tọa độ tới điểm có tọa độ (x,y);
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);
Chọn đáp án C
Hàm putpixel(int x, int y) dùng để làm gì?
Vẽ một điểm tại tọa độ (x,y);
Lấy màu của điểm có tọa độ (x,y);
Vẽ một điểm tại vị trí con trỏ.
Cả 3 phương án trên đều sai
Chọn đáp án A
Lệnh nào dùng để đóng chế độ đồ họa:
getch();
closegraph();
Cả 2 phương án trên đều sai.
Cả 2 phương án trên đều đúng.
Chọn đáp án B
Hàm closegraph() dùng để làm gì:
Sẽ giải phóng hết các vùng nhớ giành cho đồ họa.
Dùng để dừng màn hình
Dùng để xóa màn hình.
Cả 3 phương án trên đều sai.
Chọn đáp án A
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):
Cả 2 hàm đều vẽ hình chữ nhật.
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.
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.
Cả hai hàm đều vẽ hình chữ nhật và tô cả màu bên trong.
Chọn đáp án B
Chế độ đồ họa bao gồm các vấn đề:
Bao nhiêu màu.
Gồm những màu gì.
Độ phân giải của màn hình là bao nhiêu.
Cả 3 phương án trên.
Chọn đáp án D
Hàm setcolor(int color) làm nhiệm vụ gì:
Thiết lập màu nền.
Đặt màu vẽ hiện tại.
Cả 2 ý trên đều đúng.
Cả hai ý trên đều sai.
Chọn đáp án B
Tham số clip trong hàm setviewport(int x1, int y1, int x2, int y2, int clip); qui định vấn đề gì:
Cho phép hiển thị hay không hiển thị các nét vẽ bên trong viewport
Cho phép hiển thị hay không hiển thị các nét vẽ bên ngoài viewport.
Cả 2 đều đúng.
Cả 2 đều sai.
Chọn đáp án B
Điểu gì là đúng nhất khi nói về hàm floodfill(int x, int y, int Border);
Dùng để tô màu hình tròn chứa điểm (x,y).
Dùng để tô màu hình chữ nhật chứa điểm (x,y).
Dùng để tô màu đa giác chứa điểm (x,y);
Dùng để tô màu miền kín bất kì chứa điểm (x,y);
Chọn đáp án D
Trong chế độ đồ họa, hàm nào sau đây xác lập kiểu chữ, cỡ chữ:
outtextxy(int x, int y, char far * textstring);
outtext(char far *textstring);
settextstyle(int font, int direction, int charsize);
Cả 3 phương án trên.
Chọn đáp án C
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();
}
8 4 1
8 2 1
4 4 1
Kết quả khác
Chọn đáp án A
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;
}
1 4 5
1 4 7
8 4 7
Kết quả khác
Chọn đáp án A
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;
}
1
0
0.1
2
Chọn đáp án B
Kết quả trả về của toán tử sau: Evaluate !(1 && !(0 || 1))
True
False
Không xác định
Chọn đáp án A
Hàm duy nhất mà tất cả các chương trình C phải chứa là gì?
start()
system()
main()
program()
Chọn đáp án C
Câu nào sau đây cho thấy cú pháp đúng cho câu lệnh if?
if expression
if { expression
if ( expression )
expression if
Chọn đáp án C




