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:
Trong các khai báo sau, khai báo nào không đúng:
A. struct Date{int ngay, thang, nam;};
B. struct { int ngay, thang, nam;} D1,D2;
C. typedef struct { int ngay, thang, nam;} Date;
D. struct Date { long int ngay:7; long int thang:6; long int nam:5; };
-
Câu 2:
Cho các khai báo sau. Phép gán nào là không hợp lệ:
void * tongquat; int * nguyen; char * kitu;
A. tongquat=nguyen;
B. *nguyen=*tongquat;
C. kitu=(char)tongquat;
D. tongquat=kitu;
-
Câu 3:
Khi nhập vào đòng văn bản: “Chao Cac Ban”. Kết quả của chương trình sau là gì:
#include <stdio.h> #include <conio.h> int main() { clrscr(); char str[80]; fflush(stdin); scanf(“ % s”, str); cprintf(“Dong van ban vua nhap la: % s”, str); getch(); return 0; };
A. “Chao Cac Ban”
B. “Chao Cac”
C. “Chao”
D. Không hiện kết quả gì
-
Câu 4:
Kết quả của đoạn chương trình sau là gì, nếu gõ vào : ”10 T”.
char c; int n; scanf(“ % d % c”, & n, & c);
A. n=10, c=’ ‘
B. Lỗi khi xây dựng chương trình
C. n=10, c=’T’
D. Kết quả khác
-
Câu 5:
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 6:
Kết quả in ra màn hình của chương trình sau là gì:
#include
void main()
{
int i;
for (i=2; ; i++)
printf(“%3d”,i);
};
A. Vòng lặp vô hạn
B. “ 2”
C. “ 1 2”
D. Kết quả khác
-
Câu 7:
Xâu định dạng nào dưới đây dùng để in ra một số nguyên dài
A. “%ld”
B. “%x”
C. “%d”
D. “%o”
-
Câu 8:
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 9:
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 10:
Xâu định dạng nào dưới đây dùng để in ra một xâu kí tự:
A. “%f”
B. “%x”
C. “%s”
D. “%c”
-
Câu 11:
Hàm scanf(“%[^\n]”,str); tương với lệnh nào sau đây
A. getch();
B. getche();
C. macro getchar();
D. gets(str);
-
Câu 12:
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 13:
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 14:
Kết quả in ra màn hình của chương trình sau:
#include
void main()
{
int a=100, b=6;
double f;
f=(double)a/(double)b;
printf(“%2.2f”,f);
};
A. “16”
B. “16.00”
C. “16.67”
D. Kết quả khác
-
Câu 15:
Tại sao hai hàm scanf() và printf() gọi là 2 hàm nhập, xuất có định dạng:
A. Vì chúng có chuỗi định dạng trong tham số.
B. Vì chúng thường dùng để nhập, xuất các trị trong chỉ một kiểu đã định trước.
C. Vì một lí do khác.
D. 2 hàm trên không phải là hai hàm nhập xuất có định dạng.
-
Câu 16:
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 17:
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 18:
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 19:
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 20:
Hàm nào dưới đây chỉ dùng để nhập dữ liệu từ tệp:
A. getc()
B. scanf();
C. getch();
D. fscanf();
-
Câu 21:
Cho đoạn chương trình sau. Yêu cầu của đoạn chương trình trên là:
#include <stdio.h> #include <conio.h> void main() { char c; clrscr(); do c = getchar(); while (c != ’ * ’); getch(); };
A. Nhập vào 1 kí tự cho đến khi gặp kí tự ‘*’
B. Nhập vào các kí tự cho tới khi gặp kí tự ‘*’
C. Nhập các kí tự ‘*’
D. Lỗi khi xây dựng chương trình
-
Câu 22:
Chọn câu đúng nhất trong các câu sau đây
A. Khi đọc kí tự có mã 1A từ file văn bản, C sẽ đọc thành kí tự có mã -1.
B. Khi đọc file văn bản, cả hai kí tự OD và OA sẽ được C đọc thành 1 kí tự có mã OA.
C. Khi đọc kí tự có mã OD từ file văn bản thì C sẽ bỏ qua
D. A, B, C đều đúng
-
Câu 23:
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 24:
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 25:
Hàm nào dưới đây chỉ dùng để ghi một kí tự vào tệp:
A. putch();
B. puts();
C. fputs();
D. fputc();
-
Câu 26:
Đâ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 27:
Có bao nhiêu cách khai báo biến cấu trúc?
A. 1
B. 2
C. 3
D. 4
-
Câu 28:
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 29:
Kết quả của chương trình sau là gì?
#include <stdio.h> void main() { int i = 1, k = 0; for (; i < 5; i++) k++; printf(“ % d”, k); }
A. 0
B. 4
C. 5
D. Vòng lặp vô hạn
-
Câu 30:
Kết quả của chương trình sau
#include “stdio.h” void main() { int i; i = 10; printf(“ % o”, i); }
A. 12
B. 10
C. 8
D. Kết quả khác
-
Câu 31:
Chọn một phát biểu sai:
A. Chuỗi là một mảng các kí tự.
B. Chuỗi là một mảng các kí tự và kí tự cuối cùng có mã là 0.
C. Chuỗi là mảng các kí tự và kí tự cuối cùng có mã là NULL.
D. Chuỗi là mảng các trị 2 byte.
-
Câu 32:
Câu lệnh sau có ý nghĩa gì?
FILE * fopen(tep1, ”r + ”);
A. Mở tệp văn bản cho phép ghi.
B. Mở tệp văn bản cho phép đọc.
C. Mở tệp văn bản cho phép cả đọc cả ghi.
D. Mở tệp văn bản đã tồn tại để đọc.
-
Câu 33:
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. 17
-
Câu 34:
Trong chế độ văn bản, dấu hiệu kết thúc tệp là:
A. EOF
B. NULL
C. \n
D. Ctrl_Z
-
Câu 35:
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 36:
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 37:
Nếu có các khai báo sau. Câu nào sau đây là đúng:
char msg[10]; char * ptr; char value;
A. ptr=value;
B. ptr=msg;
C. Cả hai câu trên đều đúng
D. Cả hai câu trên đều sai
-
Câu 38:
Khai báo các biến: int m,n; float x,y; Lệnh nào sai :
A. n=5 ;
B. x=10 ;
C. y=12.5 ;
D. m=2.5 ;
-
Câu 39:
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 40:
Ngôn ngữ lập trình C được Dennish phát triển dựa trên ngôn ngữ lập trình nào:
A. Ngôn ngữ B
B. Ngôn ngữ BCPL
C. Ngôn ngữ DEC PDP
D. Ngôn ngữ B và BCPL
-
Câu 41:
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 42:
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 43:
Chọn kết quả đúng cho chương trình sau:
#include <stdio.h> void main() { clrscr(); struct sv { float d; char ht[10]; }; struct sv m, * p; p = & m; ( * p).d = p -> d = 10; strcpy(m.ht, ”NguyenVanTuan”); printf(“ % 0.1 f”, m.d); printf(“ % s”, m.ht); };
A. “10.000000NguyenVanTuan”
B. “10.0NguyenVanTuan”
C. Chương trình bị lỗi
D. Kết quả khác
-
Câu 44:
Khai báo các biến:
int m,n; float x,y;
Lệnh nào sai :
A. n=5
B. x=10
C. y=12.5
D. m=2.5
-
Câu 45:
Chọn kết quả của đoạn code sau:
for (int i = 1; i < 10; i++) for (int j = 1; j < 10; j++) ì(j % i == 0) printf(“Hello\ n”);
A. 6 chuỗi “Hello”
B. 12 chuỗi “Hello”
C. Không có kết quả xuất ra màn hình
D. 23 chuỗi “Hello”
-
Câu 46:
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 47:
Kết quả của chương trình sau:
#include
void main()
{
int i=98;
printf(“%c”,i);
};
A. 98
B. b
C. B
D. Kết quả khác
-
Câu 48:
Kết quả của chương trình sau:
#include “stdio.h”
void main()
{
int i;
i=10;
printf(“%o”,i);
}
A. 12
B. 10
C. 8
D. Kết quả khác
-
Câu 49:
Cho biết giá trị của biểu thức: 2+4>2&&4<2;
A. 1
B. 0
C. -1
D. Không câu nào đúng
-
Câu 50:
Kết quả của chương trình sau là gì?
#include <stdio.h> #include <conio.h> float x[] = { 63.2, -45.6, 70.1, 3.6, 14.5 }; int n = sizeof(x) / sizeof(float); void main() { clrscr(); int i, j; floar c; for (i = 0, j = n - 1; i < j; i++, j--); { c = x[i]; x[i] = x[j]; x[j] = c; }; printf(“\nDay ket qua la: \n”); for (i = 0; i < n; i++) printf(“ % 8.2 f”, x[i]); getch(); return; };
A. Dãy kết quả là: 63.20, -45.60, 70.10, 3.60, 14.50
B. Dãy kết quả là : 14.50, 3.60, 70.10, -45.60, 63.20
C. Kết quả khác
D. 1 và 2