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 số các định dạng dưới đây, định dạng nào dùng để in ra địa chỉ:
A. “%f”
B. “%s”
C. “%p”
D. “%h”
-
Câu 2:
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 3:
Hàm nào dưới đây chỉ dùng để ghi 1 xâu kí tự vào tệp:
A. putch();
B. puts();
C. fputc();
D. fputs();
-
Câu 4:
Đâ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 5:
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 6:
Kết quả hiển thị ra màn hình của chương trình sau là gì :
#include <stdio.h>
void main()
{
int a,b ;
a=100 ;
b=56 ;
printf(“%d”,(a<b) ? a:b);
}
A. 56
B. 100
C. Báo lỗi khi thực hiện xây dựng chương trình
D. Kết quả khác
-
Câu 7:
Kết quả in ra màn hình của chương trình sau:
#include
void main()
{
int ch=’A’;
printf(“%d”,ch);
}
A. A
B. a
C. 65
D. Kết quả khác
-
Câu 8:
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 9:
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 10:
Một biến phải bắt đầu với:
A. Một kí tự thường như các chữ cái hoặc dấu gạch dưới.
B. Một dấu gạch dưới.
C. Một kí tự kiểu số
D. Một toán tử như: +, -…
-
Câu 11:
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 12:
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 13:
Khi biến con trỏ không chứa bất kì một địa chỉ nào thì giá trị của nó sẽ là:
A. 0
B. NULL
C. Cả hai phương án trên đều đúng
D. Cả hai phương án trên đều sai
-
Câu 14:
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 15:
Hàm nào trong các hàm sau thuộc các hàm nhập xuất không định dạng:
- printf();
- scanf();
- getchar();
- putchar();
A. 1,2
B. 3,4
C. 1,4
D. 2,3
-
Câu 16:
Có các khai báo sau:
char tb, mang[15];
Trong các câu lệnh sau, câu nào đúng:
A. tb=”chào bạn”;
B. gets(mang);
C. mang=”chaoban”;
D. gets(tb);
-
Câu 17:
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 18:
Khai báo hàm tính tổng các phần tử trong một mảng các số nguyên dưới đây, khai báo nào đúng:
A. void Sum( int a[]);
B. long Sum( int *a);
C. void Sum(int a[], int n);
D. Cả 3 phương án trên đề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:
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 21:
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 22:
Kiểu dữ liệu float có thể xử lí dữ liệu trong phạm vi nào
A. 3.4*10-38 đến 3.4*1038
B. -32768 đến 32767
C. -128 đến 127
D. 0…65535
-
Câu 23:
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();
-
Câu 24:
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 25:
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 26:
Kết quả của chương trình sau là gì:
#include <stdio.h> void main() { int x, * p; x = 3; x = 6; p = & x; * p = 9; printf(“ % d”, x); printf(“ % d”, * p); printf(“ % d”, x); };
A. “369”
B. “696”
C. “999”
D. Kết quả khác
-
Câu 27:
Kết quả của chương trình sau là gì:
#include <stdio.h> int change(int a) { a = 10; return a; }; void main() { int a = 5; change(i); printf(“ % d”, i); };
A. 5
B. 10
C. 0
D. Báo lỗi khi thực hiện chương trình
-
Câu 28:
Đoạn code nào sẽ hoán vị 2 số a và b:
A. t=a; a=b; b=t;
B. t=a; a=b; t=b;
C. a=t; b=a; t=b;
D. t=b; b=a; a=t;
-
Câu 29:
Đâu là phát biểu đúng nhất về biến động:
A. Chỉ phát sính trong quá trình thực hiện chương trình.
B. Khi chạy chương trình, kích thước vùng biến, vùng nhớ và địa chỉ vùng nhớ có thể thay đổi.
C. Sau khi sử dụng có thể giải phóng đi để tiết kiệm chỗ trong bộ nhớ.
D. Tất cả các đáp án trên.
-
Câu 30:
Đâu là kết quả của đoạn mã sau:
struct Employee { char Code[], name[]; long Salary; }; Employee e1 = { “ E089”, “Hoang so”, 12000 }, e2 = e1; printf(“ % ld”, el.Salary + e2 -> Salary);
A. 24000
B. 12000
C. Đoạn mã bị lỗi
D. Kết quả khác
-
Câu 31:
Khi khai báo mảng, ta khởi tạo luôn giá trị của mảng như sau:
int x[3]={4,2,6}; Nghĩa là:
A. x[1]=4, x[2]=2, x[3]=6
B. x[0]=4, x[1]=2, x[2]=6;
C. Khai báo không đúng
D. Kết quả khác
-
Câu 32:
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 33:
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 34:
Kết quả của chương trình sau là gì:
#include <stdio.h>
int change(int a)
{
a=10;
return a;
};
void main()
{
int a=5;
change(i);
printf(“%d”,i);
};
A. 5
B. 10
C. 0
D. Báo lỗi khi thực hiện chương trình
-
Câu 35:
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 36:
Độ ư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 37:
Hằng có thể được định nghĩa theo cách nào?
A. #define <indentifier> string
B. const tên_kiểu tên_biến_hằng = giá trị;
C. Không có cách định nghĩa chung
D. 1 và 2
-
Câu 38:
Đâ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 39:
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 40:
Kết quả của chương trình sau là gì?
#include <stdio.h> #include <conio.h> #include <ctype.h> #define EOL‘\ n’ void main() { clrscr(); char chu[80]; int tong, dem; for (dem = 0; dem < tong; dem++); tong = dem; for (dem = 0; dem < tong; ++dem) putchar(toupper(chu[dem])); getch(); return; };
A. Nhập vào một kí tự thường, sau đó chuyển sang chữ hoa rồi in ra màn hình.
B. Nhập một kí tự hoa, sau đó chuyển sang chữ thường rồi in ra màn hình.
C. 1 và 2
D. Kết quả khác
-
Câu 41:
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 42:
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 43:
Cho a=3, b=2. Biến c=(a<<=b) sẽ có giá trị nào dưới đây
A. c=9
B. c=12. [ c =(a = (a<<=b)) = (a= a.2b)]
C. c=8
D. c=6
-
Câu 44:
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 45:
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 46:
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 47:
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 48:
Lệnh nào trong các lệnh sau cho phép dừng câu lệnh điều khiển
A. break
B. goto
C. continue
D. Cả 3 phương án trên
-
Câu 49:
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 50:
Kết quả in ra màn hình của chương trinh sau là gì:
#include
void main()
{
int i;
for (i=2; i<=4; i+=2)
printf(“%3d”,i);
};
A. “ 1 2 3 4”
B. “ 2 3 4”
C. “ 2 4”
D. Chương trình không chạy được