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)
-
Câu 1:
Độ ưu tiên đối với các toán tử logic là:
A. AND, NOT, OR
B. NOT, OR, AND
C. OR, NOT, AND
D. NOT, AND, OR
-
Câu 2:
Hàm nào dưới đây chỉ dùng để ghi một khối dữ liệu vào file:
A. fgets();
B. fputs();
C. fwrite();
D. fread();
-
Câu 3:
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 4:
Toán tử “++n” được hiểu
A. Giá trị n giảm đi sau khi giá trị của nó được sử dụng
B. Giá trị n giảm đi trước khi giá trị của nó được sử dụng
C. Giá trị của n được tăng sau khi giá trị của nó được sử dụng
D. Giá trị của n được tăng lên trước khi giá trị của nó được sử dụng
-
Câu 5:
Giả sử a và b là hai số thực. Biểu thức nào dưới đây là không được phép theo cú pháp của ngôn ngữ lập trình C
A. (a /=b)
B. (a-=b)
C. (a>>=b)
D. (a*=b)
-
Câu 6:
Tìm kết quả của chương trình sau:
#include <stdio.h> main() { int i, ch; for (i = 0, ch = ’A’; i < 4; i++, ch += 2) putchar(ch); };
A. “ABCDE”
B. “ABC”
C. “ACEG”
D. Không câu nào đúng
-
Câu 7:
Kiểu dữ liệu nào dưới đây không được coi là kiểu dữ liệu cơ bản trong ngôn ngữ lập trình C
A. Kiểu mảng
B. Kiểu enum
C. Kiểu short int
D. Kiểu unsigned
-
Câu 8:
Để tạo danh sách liên kết, theo bạn sinh viên nào dưới đây là khai báo đúng cấu trúc tự trỏ sẽ được dùng:
1. Sinh viên 1:
struct SV { char ht[25]; int tuoi; struct Sv * tiep; };
2. Sinh viên 2
typedef struct SV node; struct SV { char ht[25]; int tuoi; node * tiep; };
3. Sinh viên 3
typedef struct SV { char ht[25]; int tuoi; struct SV * tiep; } node;
A. 1
B. 2
C. 2, 3
D. 1,2 và 3
-
Câu 9:
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 10:
Phát biểu nào sau đây là sai khi nói đến tập tin:
A. Tập tin là dữ liệu đã hoàn tất được lưu trong bộ nhớ ngoài bởi người dùng hay một chương trình.
B. Hệ điều hành nhận biết một tập tin nhờ vào tên đầy đủ của nó gồm đường dẫn và tên tập tin.
C. “C:\tm\TEN.txt” – Dạng mô tả tập tin trong C.
D. “C:/tm/TEN.txt” – Dạng mô tả tập tin trong C.
-
Câu 11:
Kết quả in ra màn hình của chương trình sau là gì:
#include <stdio.h> void main() { int i; for (i = 2;; i++) printf(“ % 3 d”, i); };
A. Vòng lặp vô hạn
B. “ 2”
C. “ 1 2”
D. Kết quả khác
-
Câu 12:
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 13:
Một biến được gọi là biến toàn cục nếu:
A. Nó được khai báo tất cả các hàm, ngoại trừ hàm main()
B. Nó được khai báo ngoài tất cả các hàm kể cả hàm main()
C. Nó được khai báo bên ngoài hàm main()
D. Nó được khai báo bên trong hàm main()
-
Câu 14:
Những phát biểu nào sau đây là đúng
A. Rẽ nhánh là việc chọn ra một trong hai hay nhiều con đường cho việc thực hiện tính toán sau đó
B. Lưu đồ có thể có nhiều điểm bắt đầu và kết thức
C. Kiểu kí tự chứa một kí tự nằm trong dấu nháy kép
D. Trong các lệnh if lồng nhau, else thuộc về if phía trước gần nó nhất.
-
Câu 15:
Xâu định dạng nào dưới đây dùng để in ra một số nguyên
A. “%u”
B. “%e”
C. “%d”
D. “%p”
-
Câu 16:
Khai báo hàm đọc một text file vào một mảng các số nguyên, hãy chọn khai báo đúng
A. void Read( char* fName, int a[]);
B. void Read(char* fName, int a);
C. void Read(char* fName, int *a);
D. void Read(char* fName, int *&a, int &n);
-
Câu 17:
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 18:
Kết quả của chương trình sau là gì
#include <stdio.h> void hoanvi(int * px, int * py) { int z; z = * px; * px = * py; * py = z; }; void main() { int a = 15, b = 21; hoanvi(a, b); printf(“ % d % d”, a, b); };
A. “15 21”
B. “21 15”
C. Báo lỗi khi thực hiện chương trình
D. Kết quả khác
-
Câu 19:
Đâu là những toán tử toán học?
A. +, /, %.
B. +, -, *, /, %, ++, --, >, <
C. &&, ||
D. +, -, *, /, %, =, !=
-
Câu 20:
Ngôn ngữ lập trình được Dennish đưa ra vào năm nào?
A. 1967
B. 1972
C. 1970
D. 1976
-
Câu 21:
Nếu hàm được gọi trước khi nó định nghĩa thì điều kiện là gì
A. Kiểu trả về của hàm phải là kiều void
B. Kiểu đầu vào của hàm phải là kiểu void
C. Trước khi gọi hàm nó phải được khai báo
D. Hàm chỉ trả về kiểu dữ liệu boolean
-
Câu 22:
Lệnh nào trong các lệnh sau cho phép nhảy ra khỏi vòng lặp đến vị trí bất kì mong muốn:
A. break;
B. continue;
C. goto;
D. Không có phương án nào
-
Câu 23:
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 24:
Giả sử a và b là 2 số thực. Biểu thức nào dưới đây là không được phép
A. (a+=b)
B. (a-=b)
C. (a>>=b)
D. (a*=b)
-
Câu 25:
Hãy khai báo một cấu trúc mô tả sinh viên, thông tin về mỗi sinh viên bao gồm: tên, điểm 3 môn học. Khai báo nào sau đây là đúng:
A. structure STUDENT {char Name[]; int s1,s2,s3;};
B. struct STUDENT {char Name[]; int s1, s2, s3;};
C. typedef struct STUDENT {char Name[]; float s1,s2,s3;};
D. typedef STUDENT { char Name[]; int s1, s2,s3;};
-
Câu 26:
Một biến được gọi là một biến địa phương nếu:
A. Nó được khai báo bên trong các hàm hoặc thủ tục, kể cả hàm main()
B. Nó đươc khai báo bên trong các hàm ngoại trừ hàm main()
C. Nó được khai báo bên trong hàm main()
D. Nó được khai báo bên ngoài các hàm kể cả hàm main()
-
Câu 27:
Kí hiệu nào là con trỏ của phẩn tử thứ 3 của màng a có 4 kí tự:
A. *(a+3);
B. *(a+2);
C. *a+3;
D. *(a+4);
-
Câu 28:
Phép trừ 1 con trỏ với một số nguyên sẽ là:
A. Một số nguyên
B. Một con trỏ cùng kiểu
C. Cả hai kết quả trên đều đúng
D. Cả hai kết quả trên đều sai
-
Câu 29:
Phép toán 1 ngôi nào dùng để xác định giá trị ở địa chỉ con trỏ trỏ tới:
A. !;
B. &;
C. *;
D. Kết quả khác
-
Câu 30:
Các kí hiệu đặc trưng cho sự tác động lên dữ liệu gọi là
A. Hàm
B. Biểu thức
C. Biến
D. Toán tử
-
Câu 31:
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 32:
Có các khai báo sau. Trong các câu lệnh sau, câu nào đúng:
char tb, mang[15];
A. tb=”chào bạn”;
B. gets(mang);
C. mang=”chao ban”;
D. gets(tb);
-
Câu 33:
Đâu là phát biểu dúng về danh sach moc nối:
A. Độ dài danh sách không thể thay đổi.
B. Các phần tử của nó được lưu trữ rải rác trong bộ nhớ RAM.
C. Để cài đặt danh sách móc nối phải sử dụng đến cấu trúc tự trỏ.
D. Chỉ có thể xóa được phần tử đầu tiên của danh sách.
-
Câu 34:
Giá trị lôgic của biểu thức sau là gì: !(1&&1||1&&0);
A. 1
B. 0
C. -1
D. Không câu nào đúng
-
Câu 35:
Trong các câu sau, câu nào đúng:
A. Giá trị của một biến có thể thay đổi được.
B. Giá trị của một biến không thể thay đổi được.
C. Có thể khai báo 2 biến trùng tên trong cùng một hàm.
D. Có thể khai báo 2 biến trùng tên trong cùng một hàm.
-
Câu 36:
Định dạng nào dưới đây dùng để hiển thị một số thực:
A. “%f”
B. “%u”
C. “%i”
D. “%float”
-
Câu 37:
Giả sử có câu lệnh ch[]= "A". ch chứa bao nhiêu bytes
A. 1
B. 2
C. 3
D. 4
-
Câu 38:
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 39:
Sử dụng cách truyền nào trong hàm sẽ không làm thay đổi giá trị của biến trong chương trình chính
A. Truyền bằng trị
B. Truyền bằng giá trị địa chỉ của tham số
C. Cả a và b đều đúng
D. Cả a và b đều sai
-
Câu 40:
Kiểu dữ liệu nào dưới đây được coi là kiểu dữ liệu cơ bản trong ngôn ngữ lập trình C
A. Kiểu double
B. Kiểu con trỏ
C. Kiểu hợp
D. Kiểu mảng
-
Câu 41:
Đâ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 42:
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 43:
Cho khai báo. Câu lệnh nào không hợp lệ?
struct T { int x; float y; } t, * p, a[10];
A. p=&t;
B. p=&t.x;
C. p=&a[5];
D. p=&a;
-
Câu 44:
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
-
Câu 45:
Có thể truy cập thành phần của cấu trúc thông qua con trỏ như( với p là con trỏ cấu trúc, a là thành phần cấu trúc):
A. (*p).a;
B. *p->a;
C. A và B đều đúng
D. A và B đều sai
-
Câu 46:
Biến con trỏ có thể chứa
A. Địa chỉ vùng nhớ của một biến khác
B. Giá trị của một biến khác
C. Cả a và b đều đúng
D. Cả a và b đều sai
-
Câu 47:
Cho khai báo sau. Số lượng bít sử dụng trong biến cấu trúc trên là bao nhiêu:
struct Date { unsigned int ngay: 5; unsigned int thang; unsigned int nam: 11; } sn1;
A. 16
B. 20
C. 32
D. 48
-
Câu 48:
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 49:
Phát biểu nào đúng khi nói về câu lệnh fflush(FILE *f):
A. Hàm làm sạch vùng đệm của tệp f, nếu thành công cho giá trị số tệp đang mở, trái lại, trả về EOF.
B. Hàm làm sạch giá trị vùng đệm của tệp f, nếu thành công hàm cho giá trị EOF, trái lại, hàm trả vể 0.
C. Hàm làm sạch vùng đệm của tệp f, nếu thành công trả về 0, trái lại, trả về EOF.
D. Hàm xóa bộ nhớ đệm của bàn phím.
-
Câu 50:
Hàm nào dưới đây chỉ dùng để chuyển con trỏ về vị trí đầu tệp:
A. fseek();
B. rewind();
C. ftell();
D. seek();