wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

C++: Kiểu dữ liệu và biến trong C++

Total questions: 100

Worksheet time: 50mins

Name
Class
Date
1.

Kiểu dữ liệu nào dùng để lưu số nguyên trong C++?

a)

double

b)

float

c)

int

d)

long double

2.

Kiểu dữ liệu nào lưu ký tự đơn?

a)

float

b)

bool

c)

long

d)

char

3.

Kiểu dữ liệu nào chỉ nhận giá trị true/false?

a)

char

b)

bool

c)

string

d)

float

4.

Kích thước thường gặp của int là bao nhiêu byte?

a)

1

b)

2

c)

4

d)

8

5.

Kiểu dữ liệu double có độ chính xác...

a)

thấp hơn int

b)

bằng float

c)

thấp hơn float

d)

cao hơn float

6.

Kiểu dữ liệu nào không lưu giá trị?

a)

char

b)

float

c)

double

d)

void

7.

Từ khóa nào dùng để tạo biến không dấu?

a)

signed

b)

short

c)

long

d)

unsigned

8.

Trong C++, kiểu dữ liệu string cần thư viện nào?

a)

<math>

b)

<vector>

c)

<iostream>

d)

<string>

9.

Kiểu dữ liệu nào cho phép lưu số thực?

a)

int

b)

char

c)

bool

d)

float

10.

Kiểu wchar_t dùng để lưu...

a)

ký tự ASCII

b)

số nguyên nhỏ

c)

giá trị logic

d)

ký tự rộng Unicode

11.

Biến là gì trong C++?

a)

lệnh của chương trình

b)

thư viện của C++

c)

hàm xử lý chính

d)

vùng nhớ lưu giá trị

12.

Câu lệnh khai báo biến đúng?

a)

int a = "5";

b)

float = b;

c)

char 5c;

d)

int soLuong;

13.

Khai báo biến và gán giá trị: đúng cú pháp?

a)

int x: 10

b)

int x == 10

c)

int x = 10;

d)

x int = 10;

14.

C++ phân biệt chữ hoa và chữ thường?

a)

không phân biệt

b)

tuỳ hệ điều hành

c)

có phân biệt

d)

chỉ phân biệt trong string

15.

Biến không được bắt đầu bằng gì?

a)

dấu gạch dưới

b)

chữ cái

c)

chữ số

d)

chữ thường

16.

Kiểu dữ liệu của số 5.5 là?

a)

int

b)

long

c)

char

d)

double

17.

Lệnh nào khai báo biến ký tự?

a)

bool x;

b)

double c;

c)

char k;

d)

long t;

18.

Biến toàn cục được khai báo ở đâu?

a)

trong hàm main

b)

trong vòng lặp

c)

trong khối if

d)

ngoài mọi hàm

19.

Cú pháp sai trong các câu sau?

a)

int a;

b)

float b = 4.5;

c)

char c = 'Z';

d)

int 5x;

20.

Kiểu nào có kích thước nhỏ nhất?

a)

float

b)

double

c)

long

d)

char

21.

Từ khóa nào tạo số nguyên nhỏ?

a)

long

b)

unsigned

c)

short

d)

wchar_t

22.

Con trỏ là kiểu dữ liệu...

a)

lưu ký tự

b)

lưu boolean

c)

lưu địa chỉ

d)

lưu số thực

23.

Tham chiếu được khai báo bằng ký hiệu...

a)

*

b)

/

c)

&

d)

@

24.

Cấu trúc dữ liệu struct thuộc nhóm?

a)

built-in

b)

derived

c)

user-defined

d)

pointer

25.

Mảng thuộc nhóm nào?

a)

built-in

b)

derived

c)

user-defined

d)

boolean

26.

Union là kiểu dữ liệu...

a)

lưu nhiều giá trị riêng biệt

b)

nhiều vùng nhớ độc lập

c)

cùng một vùng nhớ

d)

thay thế enum

27.

Enum dùng để...

a)

gộp biến khác kiểu

b)

tạo lớp

c)

đặt tên cho hằng số

d)

tăng bộ nhớ

28.

28. Biến cục bộ tồn tại trong...

a)

toàn bộ chương trình

b)

mọi tệp

c)

khối lệnh

d)

thư viện

29.

Khai báo đúng tên biến?

a)

diem-hoc-sinh

b)

1sinhVien

c)

diemSo

d)

tong diem

30.

Lệnh nào tạo biến bool?

a)

int t = false;

b)

bool x = true;

c)

string b = 0;

d)

char c = true;

31.

31. Kiểu double dùng để lưu...

a)

ký tự

b)

logic

c)

địa chỉ

d)

số thực lớn

32.

Lệnh sai là?

a)

string ten;

b)

bool x = false;

c)

char c = "A";

d)

double d = 4.2;

33.

Kiểu void dùng cho...

a)

biến

b)

mảng

c)

hàm không trả về

d)

ký tự

34.

Số 0 có thể gán cho kiểu bool?

a)

chỉ trong hàm

b)

chỉ khi ép kiểu

c)

được

d)

không bao giờ

35.

Kích thước float thường là...

a)

2

b)

1

c)

8

d)

4

36.

Giá trị trả về của sizeof(int) là kiểu nào?

a)

int

b)

long

c)

size_t

d)

size_a

37.

Ký hiệu dùng để khai báo con trỏ là gì?

a)

&

b)

.

c)

->

d)

*

38.

Tham chiếu (reference) trong C++ có đặc điểm nào?

a)

phải luôn trỏ tới nullptr

b)

có thể đổi sang biến khác

c)

là bí danh của biến gốc

d)

cần cấp phát động

39.

Để nhập dữ liệu từ bàn phím dùng đối tượng nào?

a)

printf

b)

scanf

c)

getline

d)

std::cin

40.

Để in ra màn hình dùng gì?

a)

scanf

b)

fprintf

c)

cin

d)

std::cout

41.

Kiểu nào phù hợp để lưu true/false?

a)

int

b)

char

c)

float

d)

bool

42.

Để khai báo hằng số sử dụng từ khóa nào?

a)

var

b)

let

c)

immutable

d)

const

43.

Từ khóa để tạo alias kiểu là gì?

a)

typedefs

b)

aliasof

c)

newtype

d)

typedef

44.

Kiểu dữ liệu nào thường 1 byte?

a)

int

b)

float

c)

double

d)

char

45.

Kiểu dữ liệu nào dùng cho Unicode rộng?

a)

char

b)

string

c)

int

d)

wchar_t

46.

Khi nào dùng unsigned int?

a)

cần chữ âm

b)

cần ký tự

c)

cần số thực

d)

chỉ số không âm

47.

short int so với int thường là?

a)

lớn hơn

b)

bằng nhau

c)

là float

d)

nhỏ hơn

48.

long long int thường dùng khi?

a)

cần ký tự

b)

cần số thực

c)

cần bool

d)

cần số nguyên lớn

49.

Mảng int a[10]; có bao nhiêu phần tử?

a)

9

b)

0

c)

100

d)

10

50.

Cú pháp đúng khai báo hàm trả về int là?

a)

func() int;

b)

int: func();

c)

return int func();

d)

int func();

51.

Biến nào có phạm vi cục bộ?

a)

khai báo ngoài hàm

b)

khai báo trong file khác

c)

khai báo static toàn cục

d)

khai báo trong hàm

52.

Biến toàn cục có phạm vi tác động đến đâu?

a)

chỉ trong hàm main

b)

chỉ trong file khai báo

c)

toàn chương trình

d)

chỉ trong vòng lặp

53.

Khi dùng new để cấp phát, để giải phóng dùng gì?

a)

free()

b)

delete[]

c)

malloc()

d)

delete

54.

Để cấp phát mảng động dùng?

a)

new int;

b)

delete int;

c)

free(ptr)

d)

new int[n]

55.

nullptr là gì?

a)

một số 0

b)

con trỏ hợp lệ

c)

một hàm

d)

con trỏ null

56.

Biến static trong hàm có thời gian sống là?

a)

cục bộ ngắn

b)

lúc có điều kiện

c)

hằng số

d)

suốt chương trình

57.

Từ khóa extern dùng để?

a)

tạo hàm inline

b)

định nghĩa lớp

c)

tạo con trỏ

d)

tham chiếu biến toàn cục khác

58.

Toán tử % dùng cho gì?

a)

chia thực

b)

nhân

c)

lũy thừa

d)

lấy dư

59.

++i và i++ khác nhau ở?

a)

kết quả tính toán giống nhau luôn

b)

là phép gán

c)

đều biến thành string

d)

thứ tự tăng trước/sau

60.

Phép toán & giữa hai số là?

a)

phép OR

b)

phép XOR

c)

phép cộng

d)

phép AND bit

61.

Phép | là phép gì?

a)

và logic

b)

lấy dư

c)

dịch trái

d)

OR bit

62.

Toán tử điều kiện ba ngôi là?

a)

? :

b)

&& ||

c)

++ --

d)

?;

63.

Để ép kiểu sang int đúng?

a)

(float) x

b)

toInt(x)

c)

cast(x)

d)

(int) x

64.

std::string là kiểu gì?

a)

kiểu cơ bản

b)

con trỏ

c)

mảng số

d)

kiểu chuỗi

65.

Hàm getline dùng để?

a)

in dòng

b)

chia chuỗi

c)

trả về độ dài

d)

đọc cả dòng

66.

#include phục vụ cho?

a)

toán học

b)

xử lý file

c)

chuỗi regex

d)

nhập xuất tiêu chuẩn

67.

using namespace std; làm gì?

a)

xóa std

b)

bắt buộc dùng std::

c)

khai báo hàm

d)

bỏ tiền tố std::

68.

Lệnh return 0; trong main nghĩa là?

a)

lỗi chương trình

b)

chờ nhập

c)

gọi hàm khác

d)

kết thúc thành công

69.

Để khai báo struct dùng từ khóa?

a)

class

b)

enum

c)

union

d)

struct

70.

Điểm khác biệt chính của struct so với class trong C++ là?

a)

struct mặc định public

b)

struct có virtual sẵn

c)

struct chỉ chứa dữ liệu số

d)

struct dùng chung vùng nhớ

71.

Giá trị trong enum mặc định sẽ được gán như thế nào?

a)

theo ký tự ASCII

b)

từ 0 trở đi, tăng dần

c)

phải gán thủ công

d)

theo thứ tự bằng mã Unicode

72.

friend trong class dùng để?

a)

private function

b)

tạo biến tạm

c)

plan gì đó

d)

cho truy cập đặc quyền

73.

public trong class có nghĩa?

a)

riêng tư

b)

chỉ thư viện

c)

ẩn nội dung

d)

có thể truy cập ngoài

74.

private trong class nghĩa là?

a)

truy cập mọi nơi

b)

in ra màn hình

c)

công khai

d)

chỉ trong class

75.

Hàm khởi tạo (constructor) có đặc điểm?

a)

trả về int

b)

có return void

c)

phải static

d)

không có kiểu trả về

76.

Destructor ký hiệu bằng?

a)

Class~Name

b)

ClassName~

c)

delete ClassName

d)

~ClassName

77.

Gọi hàm thành viên cần cú pháp?

a)

obj->func();

b)

obj::func();

c)

func.obj();

d)

obj.func();

78.

Truy cập con trỏ thành viên dùng?

a)

obj.func()

b)

obj->member không hợp lệ

c)

obj.member

d)

ptr->member

79.

Để thêm thư viện chuỗi dùng?

a)

#include <string.h>

b)

#include <iostream>

c)

#include <math.h>

d)

#include <vector.h>

80.

std::vector là kiểu gì?

a)

mảng cố định

b)

con trỏ thô

c)

chuỗi ký tự

d)

container động

81.

Hàm ảo (virtual) dùng cho gì?

a)

tăng tốc hàm

b)

ép kiểu hàm

c)

gọi hàm tĩnh

d)

đa hình thời gian chạy

82.

Nếu lớp có hàm ảo, destructor nên?

a)

private

b)

static

c)

inline

d)

virtual

83.

dynamic_cast dùng để?

a)

ép kiểu dữ liệu nguyên

b)

in ra chuỗi

c)

quản lý bộ nhớ

d)

ép kiểu an toàn cho pointer/reference

84.

typeid(obj).name() trả về gì?

a)

địa chỉ

b)

kích thước

c)

giá trị

d)

thông tin kiểu

85.

std::unique_ptr làm gì?

a)

chia sẻ quyền sở hữu

b)

cấp phát mảng cũ

c)

con trỏ thô

d)

quản lý quyền sở hữu duy nhất

86.

std::shared_ptr dùng khi?

a)

không dùng con trỏ

b)

dùng cho biến tĩnh

c)

cho hàm inline

d)

chia sẻ quyền sở hữu

87.

noexcept khai báo gì?

a)

ném ngoại lệ

b)

bắt ngoại lệ

c)

ghi log

d)

hàm không ném ngoại lệ

88.

Template trong C++ dùng cho?

a)

chỉ string

b)

chỉ số int

c)

chỉ class

d)

tạo hàm/lớp tổng quát

89.

Sự khác biệt copy ctor và assignment operator?

a)

giống hệt

b)

chỉ khác tên

c)

chỉ dùng với int

d)

ctor tạo đối tượng mới; operator gán cho đối tượng sẵn có

90.

Move constructor nhằm mục đích?

a)

sao chép dữ liệu

b)

in chi tiết

c)

bắt ngoại lệ

d)

chuyển tài nguyên thay vì sao chép

91.

Sự khác nhau giữa malloc và new?

a)

cùng C++ operator

b)

đều gọi constructor

c)

trả về kiểu bool

d)

new gọi constructor; malloc không

92.

delete[] khác delete ở chỗ nào?

a)

xóa 1 byte

b)

gọi hàm cout

c)

chuyển kiểu con trỏ

d)

gọi destructor cho mảng

93.

Virtual function table (vtable) để làm gì?

a)

lưu biến tĩnh

b)

xử lý file

c)

tăng tốc I/O

d)

hỗ trợ hàm ảo/đa hình

94.

Pure virtual function ký hiệu như nào?

a)

= 0

b)

= 1

c)

default

d)

error

95.

Abstract class có thể?

a)

khởi tạo trực tiếp

b)

dùng như struct thường

c)

copy được luôn

d)

không khởi tạo trực tiếp

96.

RTTI là viết tắt của?

a)

Run Time Type Information

b)

Remote Type Interface

c)

Runtime Template Init

d)

Run Time Type Interface

97.

Lambda expression cú pháp bắt đầu bằng?

a)

{ }

b)

( )

c)

template

d)

[ ]

98.

noexcept khác với throw()?

a)

giống hệt

b)

bắt ngoại lệ khác nhau

c)

chỉ dùng cho class

d)

chỉ định hàm không ném ngoại lệ

99.

Sử dụng std::move có tác dụng gì?

a)

copy dữ liệu

b)

in dữ liệu

c)

đổi tên hàm

d)

cho phép chuyển (move) tài nguyên

100.

RAII nguyên tắc là gì?

a)

chỉ dùng malloc

b)

tránh dùng class

c)

gọi constructor trực tiếp

d)

quản lý tài nguyên qua đối tượng (constructor/destructor)