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:
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 2:
Nghiên cứu đoạn code sau. Hãy chọn câu đúng
FILE * f = fopen(“FL.txt”, ”r”); int n = 7; fprintf(f, ” % d”, n);
A. Đoạn code gây lỗi
B. Đoạn code không lỗi
C. Đoạn code này sẽ ghi trị 7 lên file “FL.txt”
D. Đoạn code này sẽ đọc một trị từ file “FL.txt” vào biến n
-
Câu 3:
Cho biết kết quả của đoạn chương trình sau:
int p=4;
p=10+ ++p;
A. 14
B. 15
C. 16
D. Kết quả khác
-
Câu 4:
Chọn kết quả hợp lí cho chương trình sau:
void main() { struct sv { float d; char ht[10]; }; struct sv m, * p; p = & m; printf(“ % p”, & m); printf(“ % p”, p); };
A. “FFE6FFE6”
B. “FFE6FFE7”
C. “FFE66EFF”
D. “FFE4FFE4”
-
Câu 5:
Dữ liệu kí tự bao gồm
A. Các kí tự số chữ số
B. Các kí tự chữ cái
C. Các kí tự đặc biệt
D. Cả a,b và c
-
Câu 6:
Xâu định dạng nào sau đây dùng để in ra một số thực có độ chính xác đơn
A. “%u”
B. “%e”
C. “%f”
D. “%o”
-
Câu 7:
Đâu là định nghĩa đúng về cấu trúc tự trỏ:
A. Là một cấu trúc có một trường là con trỏ chứa địa chỉ của một biến cấu trúc.
B. Là dạng cấu trúc có một trường là con trỏ chứa địa chỉ của một biến cấu trúc có dạng dữ liệu giống nó.
C. Là dạng cấu trúc có một trường có kiểu dữ liệu giống nó.
D. Tất cả các ý trên.
-
Câu 8:
Hàm clrscr() là hàm gì?
A. Là hàm xóa toàn bộ màn hình, sau khi xóa, con trỏ sẽ ở bên trái màn hình
B. Dùng để xóa sạch bộ nhớ đệm bàn phím
C. Là hàm xóa kí tự nằm bên trái con trỏ
D. Là hàm xóa kí tự nằm bên phải con trỏ
-
Câu 9:
Kết quả in ra màn hình của chương trình sau:
#include <stdio.h > void main() { char * s; s = ”chao cac ban”; strcpy( & s[5], & s[9]); printf(“ % s”, s); };
A. “chao”
B. “chao cac”
C. “chao ban”
D. “chao cac ban”
-
Câu 10:
Kết quả in ra màn hình của chương trình sau
#include <stdio.h> void main() { int i = 5, j = 6; i = i - --j; printf(“ % d”, i); };
A. 5
B. 6
C. 1
D. 0
-
Câu 11:
Đị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 12:
Hàm nào có thể thay đổi kích thước của tệp đang mở:
A. double chsize(int handle, long size);
B. long chsize(int handle, long size);
C. int chsize(int handle, long size);
D. Tất cả các đáp án trên.
-
Câu 13:
Kết quả của chương trình sau:
#include <stdio.h> void main() { int i = 98; printf(“ % c”, i); };
A. 98
B. B
C. b
D. Kết quả khác
-
Câu 14:
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 15:
Chương trình:
#include <stdio.h>
void main()
{
char c;
int n;
scanf(“%d%c”,&n,&c);
printf(“%3d%c”,n,c);
};
Giả sử khi chạy chương trình ta gõ từ bản phím: “29h b”.
Kết quả in ra n và c tương ứng sẽ là:
A. “ 29b”
B. “ 29h b”
C. Kết quả khác
D. “ 29h”
-
Câu 16:
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 17:
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 18:
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 19:
Kết quả của chương trình sau là gì:
#include <stdio.h> void main() { int x, * p; x = 6; p = & x; printf(“ % d”, x); printf(“ % d”, * p); };
A. 69
B. 66
C. Lỗi khi xây dựng chương trình
D. Kết quả khác
-
Câu 20:
Cho các khai báo sau. Hãy chọn câu đúng nhất:
struct ngay { int ng, th, n; } vaotruong, ratruong; typedef struct sinhvien { char hoten; ngay ngaysinh; };
A. Không được phép gán: vaotruong = ratruong;
B. “sinhvien” là tên cấu trúc, “vaotruong”, “ratruong” là tên biến cấu trúc.
C. Có thể viết “vaotruong.ng”, “ratruong.th”, “sinhvien.vaotruong.n” để truy xuất đến các thành phần tương ứng.
D. A, B, C đều đúng
-
Câu 21:
Trong các hàm sau, hàm nào là hàm không định dạng để in một chuỗi kí tự ra màn hình
A. puts()
B. printf()
C. scanf()
D. gets()
-
Câu 22:
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 23:
Xem đoạn code sau. Giá trị trung bình của các trường trong biến v là gì:
typedef struct STUDENT { int d1, d2, d3; }; STUDENT v = { 2, 3, 4 }; v.d1++;
A. 3.0
B. 4.0
C. Giá trị khác
D. Có lỗi trong đoạn code
-
Câu 24:
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 25:
Kết quả của chương trình sau là gì :
#include
void main()
{
int i,j;
for (i=1; i<4; i++)
j=i;
printf(“%3d”,j);
};
A. “ 1 2 3 4”
B. “ 4”
C. “ 3”
D. Kết quả khác
-
Câu 26:
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 27:
Cho biết giá trị của biểu thức 5>1:
A. -1
B. 0
C. 1
D. Không câu nào đúng
-
Câu 28:
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 29:
Trong các hàm sau, hàm nào để nhập một kí tự từ bàn phím ngay sau khi gõ, không chờ nhấn Enter và không hiện ra màn hình
A. scanf();
B. getchar();
C. getch();
D. getche();
-
Câu 30:
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 31:
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 32:
Xâu định dạng nào dưới đây dùng để in ra địa chỉ của một biến
A. “%u”
B. “%e”
C. “%o”
D. “%p”
-
Câu 33:
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 34:
Kết quả in ra màn hình của chương trình sau :
#include
void main()
{
char *s;
s=”chao cac ban”; strcpy(&s[5],&s[9]);
printf(“%s”,s);
};
A. “chao”
B. “chao cac”
C. “chao ban”
D. “chao cac ban”
-
Câu 35:
Lệnh nào trong các lệnh sau cho phép đã chuyển tới một nơi nào đó đã được gán nhãn:
A. break
B. goto
C. continue
D. exit
-
Câu 36:
Kết quả của chương trình sau là gì?
#include <stdio.h> void main() { int i, k; for (i = 1;; i++) k = 5; printf(“ % d”, i); };
A. 0
B. 5
C. Vòng lặp vô hạn
D. Kết quả khác
-
Câu 37:
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 38:
Đâ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 39:
Kết quả của đoạn chương trình sau là gì? Nếu gõ vào: “r 45”.
char c; int n; scanf(“ % c % d”, & n, & c);
A. n=45, c=’ ‘
B. n=45, c=’r’
C. Lỗi khi xây dựng chương trình
D. Kết quả khác
-
Câu 40:
Chọn câu đúng:
A. “struct” là một kiểu dữ liệu do người dùng định nghĩa bao gồm nhiều thành phần có kiểu khác nhau.
B. “struct” là sự kết hợp của nhiều thành phần có thể có thể có kiểu khác nhau.
C. Cả 2 ý đểu đúng.
D. Cả 2 ý đểu sai.
-
Câu 41:
Cho a=3, b=2 và c là 3 biến nguyên. Biểu thức nào sau viết sai cú pháp trong ngôn ngữ lập trình C
A. (c=a & b)
B. (c=a && b)
C. (c= a/b)
D. (c= a<<b)
-
Câu 42:
: Kết quả của chương trình sau là gì :
#include <stdio.h> void main() { int i, j; for (i = 1; i < 4; i++) j = i; printf(“ % 3 d”, j); };
A. “ 1 2 3 4”
B. “ 4”
C. “ 3”
D. Kết quả khác
-
Câu 43:
Đâ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 44:
Đ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 45:
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 46:
Giả sử tệp DATA chứa 5 byte: “70, 26, 13, 10, 44”. Cho đoạn lệnh. Hãy cho biết kết quả của đoạn chương trình trên:
FILE * f; char ch; f = fopen(“DATA”, ”r”); while (!feof(f)) { ch = fgetc(f); printf(“ % c”, ch); }; fclose(f);
A. “70, 26, 13, 13, 10, 44”
B. “70, 26, 13, 10, 44”
C. “70, 26, 10, 44”
D. Đoạn lệnh có lỗi
-
Câu 47:
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 48:
Chọn kết quả đúng cho chương trình sau:
#include <stdio.h> #include <string.h> void main() { struct S1 { float d; float d1; float d2; }; struct S1 m = { 12, 1 }; printf(“ % 0.1 f % 0.1 f % 0.1 f”, m.d, m.d1, m.d2); };
A. “12.01.00.0”
B. “12.0000001.0000000.000000”
C. Kết quả khác
D. Chương trình bị lỗi
-
Câu 49:
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 50:
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.