Đề thi trắc nghiệm ôn tập C++ nâng cao HUBT – có đáp án

Bộ đề trắc nghiệm C++ nâng cao dành cho sinh viên HUBT: bao phủ OOP, con trỏ, mảng, chuỗi, hàm, kế thừa–đa hình–đóng gói. Làm bài online, xem đáp án, luyện thi hiệu quả.

Từ khoá: trắc nghiệm C++ C++ nâng cao HUBT đề thi online ôn tập lập trình lập trình hướng đối tượng OOP class object kế thừa đa hình đóng gói con trỏ mảng chuỗi hàm cấu trúc dữ liệu thuật toán luyện thi đề trắc nghiệm kiểm tra kiến thức

Số câu hỏi: 100 câuSố mã đề: 2 đềThời gian: 1 giờ

Xem trước nội dung
Câu 1: 0.2 điểm
Anh (Chị) hãy cho biết, đối tượng là gì?
A.  
Là một thực thể.
B.  
Là một khuôn mẫu được tạo ra trong phần mềm.
C.  
Là biểu diễn của một thực thể trong thế giới thực của phần mềm.
D.  
Là nhóm thực thể có thuộc tính chung.
Câu 2: 0.2 điểm
Anh (Chị) hãy cho biết, lớp là gì?
A.  
Là một khuôn mẫu hoặc bản vẽ định nghĩa trạng thái và hành vi của tất cả các đối tượng thuộc về lớp đó.
B.  
Là một khuôn mẫu định nghĩa trong phần mềm.
C.  
Là một dạng hàm của chương trình.
D.  
Là khuôn mẫu hoặc bản vẽ định nghĩa các hàm giao tiếp với người dùng của chương trình hướng đối tượng.
Câu 3: 0.2 điểm
Anh (Chị) hãy cho biết, câu nào sau đây là SAI?
A.  
Lớp là một mô hình khái niệm.
B.  
Lớp là một thực thể trong thế giới thực.
C.  
Đối tượng là một vật thể thực.
D.  
Đối tượng là một đại diện của lớp.
Câu 4: 0.2 điểm
Anh (Chị) hãy cho biết, trong các khai báo dưới đây, lệnh nào khai báo số nguyên có dấu?
A.  
unsigned short number ;
B.  
short number ;
C.  
unsigned long;
D.  
signed byte number
Câu 5: 0.2 điểm
Anh (Chị) hãy chọn chọn phát biểu ĐÚNG?
A.  
Hàm thành viên biểu diễn hành vi của lớp.
B.  
Trường dữ liệu biểu diễn trạng thái của một đối tượng.
C.  
Trường dữ liệu là đại diện của lớp.
D.  
Hàm thành viên biểu diễn trạng thái của một đối tượng.
Câu 6: 0.2 điểm

Hai biến a, b trong đoạn lệnh dưới đây có quyền truy cập là gì?

class tinhtong {
int a,b;
public: int tong(void);
};

A.  
public
B.  
private
C.  
protected
D.  
Tất cả các quyền.
Câu 7: 0.2 điểm
Anh (Chị) hãy chọn đáp án SAI?
A.  
char kytu = “A”;
B.  
char kytu = 28;
C.  
signed char offset = -88;
D.  
char kytu[ ] = “sinh vien”;
Câu 8: 0.2 điểm
Một lớp trong C++ có bao nhiêu lớp con?
A.  
2
B.  
3
C.  
4
D.  
Vô số.
Câu 9: 0.2 điểm
Một lớp trong C++ có thể có bao nhiêu lớp cha?
A.  
1
B.  
2
C.  
10
D.  
Vô số.
Câu 10: 0.2 điểm
Anh (Chị) hãy chọn phát biểu đúng về tính đóng kín trong lập trình hướng đối tượng của C++?
A.  
Tiến trình che dấu việc thực thi chi tiết một đối tượng.
B.  
Các hành động và thuộc tính định nghĩa trong một lớp có thể được thừa kế hoặc sử dụng lại bởi các lớp khác.
C.  
Nhiều hình thức, hành động cùng tên có thể được thực hiện khác nhau đối với các đối tượng hoặc các lớp các khác nhau.
D.  
Tiến trình truyền dữ liệu vào biến của đối tượng.
Câu 11: 0.2 điểm
Chọn phát biểu đúng về tính kế thừa (inheritance) trong lập trình hướng đối tượng của C++?
A.  
Tiến trình che dấu việc thực thi chi tiết một đối tượng.
B.  
Các hành động và thuộc tính định nghĩa trong một lớp có thể được thừa kế hoặc sử dụng lại bởi các lớp khác.
C.  
Nhiều hình thức, hành động cùng tên có thể được thực hiện khác nhau đối với các đối tượng hoặc các lớp các khác nhau.
D.  
Tiến trình viết lại hàm thành viên của lớp cha.
Câu 12: 0.2 điểm
Chọn phát biểu đúng về tính đa hình (polymorphism) trong lập trình hướng đối tượng của C++?
A.  
Tiến trình che dấu việc thực thi chi tiết một đối tượng.
B.  
Các hành động và thuộc tính định nghĩa trong một lớp có thể được thừa kế hoặc sử dụng lại bởi các lớp khác.
C.  
Nhiều hình thức, hành động cùng tên có thể được thực hiện khác nhau đối với các đối tượng hoặc các lớp các khác nhau.
D.  
Tiến trình viết đè lên một hàm thành viên của lớp con.
Câu 13: 0.2 điểm
Con trỏ là gì?
A.  
Một biến chứa giá trị kiểu số thực, số nguyên hoặc ký tự.
B.  
Một biến chứa địa chỉ của biến khác.
C.  
Một biến có kiểu struct.
D.  
Một biến khai báo trong hàm.
Câu 14: 0.2 điểm
Trường dữ liệu tĩnh (static) còn gọi là gì?
A.  
Biến đại diện.
B.  
Biến lớp.
C.  
Biến cục bộ.
D.  
Biến toàn cục.
Câu 15: 0.2 điểm
Trạng thái của đối tượng trong thế giới thực mô tả trong lập trình hướng đối tượng của C++ được gọi là gì?
A.  
Dữ liệu thành viên.
B.  
Hàm thành viên.
C.  
Kiểu dữ liệu.
D.  
Hàm dữ liệu.
Câu 16: 0.2 điểm
Các hành vi của đối tượng trong thế giới thực mô tả trong lập trình hướng đối tượng C++ được gọi là gì?
A.  
Dữ liệu thành viên.
B.  
Hàm thành viên.
C.  
Thuộc tính.
D.  
Hành động.
Câu 17: 0.2 điểm

Kết quả của đoạn lệnh sau là gì? 

for (int i = 1; i <= 5; i++)
   cout << i << ", ";
cout << "LAUNCH!" << endl;

A.  
1, 2, 3, 4, 5, LAUNCH!
B.  
0, 1, 2, 3, 4, LAUNCH!
C.  
5, 4, 3, 2, 1, LAUNCH!
D.  
4, 3, 2, 1, 0, LAUNCH!
Câu 18: 0.2 điểm

Kết quả của đoạn lệnh sau là gì? 

int i = 5;
for (i = 1; i < 5; i++) {
   if (i == 3) continue;
   cout << i << ", ";
}
cout << "END" << endl;

A.  
1, 2, 3, 4, 5, END
B.  
1, 2, 4, END
C.  
1, 2, 3, 4, END
D.  
1, 2, 4, 5, END
Câu 19: 0.2 điểm
Anh (Chị) hãy cho biết cách khai báo đúng khi định nghĩa hàm thành viên ở ngoài lớp?
A.  

Kiểu_trả_về_của_hàm Tên_lớp:Tên_hàm(danh sách tham số) {[nội dung hàm]}

B.  

Kiểu_trả_về_của_hàm Tên_hàm:Tên_lớp(danh sách tham số) {[nội dung hàm]}

C.  

Kiểu_trả_về_của_hàm Tên_hàm(danh sách tham số) {[nội dung hàm]}

D.  

Kiểu_trả_về_của_hàm Tên_lớp::Tên_hàm(danh sách tham số) {[nội dung hàm]}

Câu 20: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn mã sau là gì? 

#include <iostream.h>
int main(){
   int a = 5;
   ++a;
   cout << a;
   return 0;
}

A.  
5
B.  
6
C.  
4
D.  
7
Câu 21: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì? 

char hoten[] = "Dai hoc Kinh doanh va Cong nghe Ha noi";
int l = strlen(hoten);
cout << ++l << endl;

A.  
37
B.  
38
C.  
39
D.  
40
Câu 22: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì? 

class nhanvien {
   double luong;
   public:
     void setLuong(double d) { luong = d; }
     double getLuong() { return luong; }
     void tangLuong(double d) { luong += d; }
}
class quanly:public nhanvien {
 double phucap;
 public: quanly() { 
 setLuong(100); 
 phucap = getLuong() * 0.5 
 cout << phucap;
 }
};
void main() { quanly q; }

A.  
Không hiện gì hết.
B.  
50
C.  
0
D.  
Chương trình báo lỗi vì lớp nhanvien không có constructor.
Câu 23: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì? 

class nhanvien {
   double luong;
   public:
     void setLuong(double d) { luong = d; }
     double getLuong() { return luong; }
     void tangLuong(double d) { luong += d; } 
}
int main() {
 nhanvien A;
 A.setLuong(700); 
 A.tangLuong(10); 
 cout << A.getLuong(); 

A.  
700
B.  
770
C.  
0
D.  
710
Câu 24: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì? 

class nhanvien {
   double luong;
   public:
     void setLuong(double d) { luong = d; }
     double getLuong() { return luong; }
     void tangLuong(double d) { luong += d; }
}
int main() {
 nhanvien A, *p;
 p = &A; 
 p->setLuong(100); 
 cout << p->luong; 
}

A.  
100
B.  
0
C.  
110
D.  
Lỗi biên dịch.
Câu 25: 0.2 điểm
Hàm constructor là gì?
A.  
Là hàm tự động được gọi bất kỳ khi nào một đối tượng mới của lớp được tạo ra.
B.  
Là hàm được gọi sau khi thực hiện xong tất cả các hàm thành viên của lớp.
C.  
Là hàm được định nghĩa ở bên ngoài lớp và chịu trách nhiệm xoá các thành viên của lớp.
D.  
Là hàm được gọi sau khi xóa đối tượng.
Câu 26: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau nếu thu = 2. là gì? 

switch (thu) {
   case 2:
       cout << “Van, Toan”;
       break;
   case 3:
       cout << “Hoa, Ly”;
       break;
   default:
       cout << “Ngay nghi”;
       break;
}

A.  
Van, Toan
B.  
Hoa, Ly
C.  
Ngay nghi
D.  
Lỗi biên dịch.
Câu 27: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì? 

enum mausac { DEN = 3, LAM, LUC, TRANG };
mausac color;
char * t;
switch (color) {
   case 0:
       t = “Mau trang”;
       break;
   case 1:
       t = “Mau den”;
       break;
   case 2: 
       t = “Mau lam”;
       break;
   case 3:
       t = “Mau luc”;
       break;
   default:
       t = “Khong co trong danh sach mau”;
       break;
}
cout << t;

A.  
Mau den
B.  
Mau lam
C.  
Mau trang
D.  
Mau luc
Câu 28: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì? 

int s = 0;
for (int i = 0; i < 10; i++)
   s+=i;
cout << s << endl;

A.  
45
B.  
0
C.  
55
D.  
50
Câu 29: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì?

int i = 0;
int s = 0;
for (int i = 0; i < 10; i++)
   s+=i;
cout << i << end;

A.  
45
B.  
Chương trình báo lỗi.
C.  
55
D.  
0
Câu 30: 0.2 điểm

Khối lệnh sau có sai ở dòng nào? 

1. int i=0;
2. do {
3.     i += 1;
4. } while (i == 0);
5. cout << i;

A.  
1
B.  
2 và 3
C.  
4
D.  
Không sai ở dòng nào cả
Câu 31: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì? 

double i = 0, n = 10, s = 0;
while (i < n) {
   double s = s + n;
   n--;
}
cout << s;

A.  
0 (đáp án đúng)
B.  
55
C.  
45
D.  
10
Câu 32: 0.2 điểm

Anh (Chị) hãy cho biết chương trình sau thực hiện công việc gì? 

#define    length(a)   (sizeof(a) / sizeof(*a))
int main() {
   int mang[] = {12, 37, 48, 51, 2, 9};
   int tk = 51, i;
   bool check = false;
   for (i = 0; i < length(mang); i++) {
       if (mang[i] == tk) {
           check = true;
           break;
       }
   }
   if (check) cout << “Found “ << tk << “ at index “ << i << endl;
   else cout <<“Not found”;
   return 0;
}

A.  
Tìm 1 phần tử trong mảng.
B.  
So sánh các phần tử mảng với nhau.
C.  
Tính tổng mảng.
D.  
Tìm phần tử lớn nhất.
Câu 33: 0.2 điểm

Chương trình sau sai ở dòng nào? 

1.define   length(a)   (sizeof(a) / sizeof(*a))
2.int main() {
3. int mang[] = {12, 37, 48, 51, 2, 9};
4. int tk = 51, i;
5. bool check = false;
6. for (i = 0; i < length(mang); i++) {
7.     if (mang[i] = tk) {
8.         check = true;
9.         break;
10.        }
11.    }
12.    cout << i ;
14.    return 0;
15.}

A.  
1, 3
B.  
1, 7
C.  
3, 5, 6
D.  
12, 14
Câu 34: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì? 

char chuoi[] = “peter pan put a pepper into pen”;
int max = strlen(chuoi);
int number = 0;
for (int i = 0; i < max; i++) {
   if (chuoi[i] != 'p') continue;
   number++;
}
cout << number << endl;

A.  
7
B.  
8
C.  
9
D.  
Chương trình báo lỗi.
Câu 35: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì?

void indl (int *a) {
   cout << *a;
}
int main() {
   int a = 10;
   indl (&a);
   return 0;
}

A.  
10
B.  
11
C.  
Địa chỉ của a.
D.  
Địa chỉ của bộ nhớ đứng trước a.
Câu 36: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì? 

char str[40];
cin.getline (str,40);
if ( strcmp(str, “Juliet”) == 0) cout << “Same here”;
else cout << str;
 

A.  
Same here
B.  
Rome
C.  
Chương trình báo lỗi.
D.  
Không in ra gì cả.
Câu 37: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì? 

int i = 10;
int n = ++i%5

A.  
i = 10, n = 0
B.  
i = 11, n = 0
C.  
i = 10, n = 1
D.  
i = 11, n = 1
Câu 38: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì? 

int s = 0;
string str;
for (int i = 0; i < 5; i++) {
   int k = 0;
   k += i;
   s = k;
}
str = ((k % 2) == 0) ? “true” : “false”;
cout << str << endl;
a. true

A.  
true
B.  
false
C.  
Chương trình lỗi.
D.  
Không in ra gì cả.
Câu 39: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì? 

const int row = 3;
const int col = 4;
int seasonTemp[row][col] = {
   { 26, 34, 22, 17 },
   { 24, 32, 19, 13 },
   { 28, 38, 25, 20 }
};
int functionM (int temp[row][col]) {
   int m = 0;
   for (int i = 0; i < row; i++)
   for (int j = 0; j < col; j++)
       if (temp[i][j] > m) m = temp[i][j];
   return m;
}
int main() {
   cout << functionM (seasonTemp) << endl;
   return 0;
}

A.  
38
B.  
13
C.  
0
D.  
60
Câu 40: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì?

const int row = 3;
const int col = 4;
int seasonTemp[row][col] = {
   { 26, 34, 22, 17 },
   { 24, 32, 19, 13 },
   { 28, 38, 25, 20 }
};
int functionM (temp[row][col]) {
   int m = 0;
   for (int i = 0; i < row; i++)
   for (int j = 0; j < col; j++)
       if (temp[i][j] < m) m = temp[i][j];
   return m;
}
int main() {
   cout << functionM (seasonTemp) << endl;
   return 0;
}

A.  
38
B.  
13
C.  
0
D.  
60
Câu 41: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì? 

string expletive = “Expletive “;
string PG13 = “deleted”;
string message = expletive + PG13;

A.  
Expletive deleted
B.  
Expletivedeleted
C.  
deletedExpletive
D.  
Lỗi biên dịch.
Câu 42: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì? 

int BinSearch (char *item,char *table[],int n, int (*Sosanh)(const char*,const char*)) {
   int bot = 0, top = n - 1, mid, cmp;
   while (bot < top) {
       mid = (bot + top) / 2;
       if ((cmp = Sosanh(item,table[mid])) == 0) return mid;
       else if (cmp < 0) top = mid - 1;
       else bot = mid + 1;
   }
   return -1;
}
int main() {
   char *cities[] = { “Boston”, “London”, “Sydney”, “Tokyo” };
   cout << BinSearch (“Sydney”,cities,4,strcmp) << endl;
}

A.  
1
B.  
2
C.  
true
D.  
Chương trình báo lỗi.
Câu 43: 0.2 điểm

Đoạn chương trình sau thực hiện công việc gì?

int BinSearch (char *item,char *table[],int n, int (*Sosanh)(const char*,const char*)) {
   int bot = 0, top = n - 1, mid, cmp;
   while (bot < top) {
       mid = (bot + top) / 2;
       if ((cmp = Sosanh(item,table[mid])) == 0) return mid;
       else if (cmp < 0) top = mid - 1;
       else bot = mid + 1;
   }
   return -1;
}
int main() {
   char *cities[] = { “Boston”, “London”, “Sydney”, “Tokyo” };
   cout << BinSearch (“Sydney”,cities,4,strcmp) << endl;
}
 

A.  
Sắp xếp mảng tăng dần.
B.  
Sắp xếp mảng giảm dần.
C.  
Tìm kiếm một chuỗi trong mảng chuỗi ký tự.
D.  
Đếm số phần tử chứa chuỗi cho trước.
Câu 44: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì?

void functionS w (int *x, int *y) {
   int tmp = *x;
   *x =* y;
   *y = tmp;
}
int main() {
   int i = 10, j = 20;
   functionSw (i,j);
   cout << i << “, “ << j << endl;
}

A.  
10, 20
B.  
20, 10
C.  
0, 0
D.  
Lỗi biên dịch.
Câu 45: 0.2 điểm

Đoạn lệnh sau thực hiện công việc gì? 

char* ReChar (char* str) {
   int len = strlen (str);
   char* ketqua = new char[len+1];
   for (int i = 0; i < len; i++) ketqua[i] = str[len-i-1];
   ketqua[len] = '\0';
   return ketqua;
}
int main() {
   char *p = 178892”;
   cout << ReChar (p) << endl;
   return 0;
}

A.  
Chuyển đổi ký tự thành số.
B.  
Đảo ngược chuỗi ký tự.
C.  
Sắp xếp chuỗi ký tự.
D.  
In các chuỗi ký tự theo chiều tăng dần.
Câu 46: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì?

char* ReChar (char* str) {
   int len = strlen (str);
   char* ketqua = new char[len+1];
   for (int i = 0; i < len; i++) ketqua[i] = str[len-i-1];
   ketqua[len] = '\0';
   return ketqua;
}
int main() {
   char *p = 178892”;
   cout << ReChar (p) << endl;
   return 0;
}

A.  
178892
B.  
298871
C.  
127889
D.  
988721
Câu 47: 0.2 điểm

Chương trình sau sai ở dòng nào? 

1. char ReChar (char str) {
2. int len = strlen (str);
3. char ketqua = new char[len+1];
4. for (int i = 0; i < len; i++) ketqua[i] = str[len-i-1];
5. ketqua[len] = '\0';
6. return ketqua;
7. }
8. int main() {
9. char p[] = 178892”;
10.    cout << ReChar (p) << endl;
11.    return 0;
12.}

A.  
1, 3
B.  
5, 10
C.  
6
D.  
Chương trình không sai.
Câu 48: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì? 

int val1, val2;
int * pointer;
pointer = &val1;
*pointer = 10;
pointer = &val2;
*pointer = 20;
cout << val1 * val2 << endl;

A.  
10 * 20
B.  
200
C.  
20
D.  
Chương trình báo lỗi.
Câu 49: 0.2 điểm

Tại dòng thứ 6, val2 có giá trị là gì? 

1. int val1 = 5, val2 = 15;
2. int *p1, *p2;
3. p1 = &val1;
4. p2 = &val2;
5. *p1 = 10;
6. *p2 = *p1;
7. p1 = p2;
8. *p2 = 20;
 

A.  
10
B.  
20
C.  
30
D.  
0
Câu 50: 0.2 điểm

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì? 

int number[5] = { 10, 20, 30, 40, 50 };
int *p;
p = number;
p++;
*p += 60;
cout << number[1] << endl;

A.  
10
B.  
20
C.  
50
D.  
80