# TRẮC NGHIỆM C++
Người soạn: Nguyễn Ngọc Ái Thảo
Lớp: 11 Tin
1. NNLT C++ được ra đời năm nào?
+ 1982
+ 1983
+ 1984
+ **1985**
2. Ai là người đã sáng tạo ra NNLT C++?
+ **Bjarne Stroustrup**
+ Guido van Rossum
+ Blaise Pascal
+ Dennis Ritchie
3. NNLT C++ có đuôi mở rộng là?
+ .java
+ **.cpp**
+ .py
+ .c
4. Từ khoá nào có trong C++ mà không có trong C?
+ break
+ continue
+ **bool**
+ switch
5. Kiểu dữ liệu nào sau đây là kiểu ký tự không dấu trong C++?
+ int
+ signed char
+ **unsigned char**
+ float
6. Hàng nào biểu diễn định nghĩa biến không hợp lệ?
+ int n=34;
+ char i='$'+2;
+ singed char y=-1789;
+ **unsinged int p=-100;**
7. Hàm nào trả về giá trị tuyệt đối của số nguyên x?
+ **abs(x)**
+ sqrt(x)
+ cbrt(x)
+ floor(x)
8. Trong C++ có bao nhiêu hàm chính?
+ **1**
+ 2
+ 3
+ 4
9. Kết thúc một chương trình trong C++, ta sử dụng dấu:
+ ,
+ .
+ **;**
+ :
10. Trong C++ cung cấp cho ta mấy loại chú thích và kể tên?
+ 1 loại đó là: //
+ 1 loại đó là: /* và */
+ **2 loại đó là: /* và */ với //**
+ Không cung cấp loại nào cả
11. Ký tự đặc biệt nào thể hiện việc xuống dòng mới?
+ **/n**
+ /r
+ /t
+ /v
12. Mệnh đề if-else trong C++ được sử dụng để làm gì?
+ **Kiểm tra một biểu thức điều kiện nào đó có đúng hay không, nếu đúng thì thực thi những câu lệnh bên trong khối lệnh if và ngược lại nếu sai thì nó sẽ bỏ qua những câu lệnh đó.**
+ Thực thi số lần lặp cụ thể.
+ Thực thi 1 hoặc nhiều khối lệnh từ nhiều điều kiện.
+ Lặp một phần của chương trình một vài lần.
13. Kết quả của đoạn code này:
```
#include <iostream>
using namespace std;
int main()
{
int n=6,dem=0;
for (int i=1;i<=n;i++)
{
if (i%2==0) dem++;
}
cout<<dem;
return 0;
}
```
+ 1
+ 2
+ **3**
+ 4
14. Đệ quy trong C++ là gì?
+ là quá trình trong đó một phương thức gọi lại chính nó một cách không liên tiếp
+ **là quá trình trong đó một phương thức gọi lại chính nó một cách liên tiếp**
+ là quá trình trong đó một phương thức không gọi lại chính nó
+ Tất cả đáp án đều sai
15. NNLT C++ cung cấp bao nhiêu toán tử toán học cơ bản?
+ 3
+ 4
+ **5**
+ 6
16. Giả sử biến A=10, biến B=20, biến C=5 thì kết quả của phép toán (B%A+B/C) là:
+ **4**
+ 10
+ 20
+ 5
17. Giả sử A=60, dịch A sang trái 2 bit sẽ được:
+ 15
+ **240**
+ 12
+ 49
18. Cho x=14 (=00001110) và y=22 (=00010110); vậy (x AND y) sẽ được:
+ **6**
+ 30
+ 56
+ 241
19. Đoạn code sau sẽ xuất ra cái gì khi nó được thực thi?
```
#include <iostream>
using namespace std;
int main()
{
int n=20;
if (n>=0)
{
if (n<10)
{
cout<<"n là số nhỏ";
}
else
{
cout<<"n là số lớn";
}
}
return 0;
}
```
+ n là số nhỏ
+ **n là số lớn**
+ trả về giá trị 0
+ báo lỗi
20. Lập trình hướng đối tượng là gì?
+ Lập trình hướng đối tượng là nhóm dữ liệu và các hàm thao tác trên dữ liệu đó vào tròng đối tượng chương trình.
+ Lập trình hướng đối tượng là đóng gói biến và các hàm thao tác trên biến đó vào một đối tượng chương trình.
+ **Lập trình hướng đối tượng là tìm cách tổ chức chương trình thành các đối tượng và cho các đối tượng tương tác với nhau.**
+ Lập trình hướng đối tượng là mô phỏng các đối tượng trong thế giới thực.
21. Mảng là gì?
+ Một chuỗi các phần tử khác kiểu được đặt trên các vị trí bộ nhớ liên tiếp nhau, trong đó mỗi thành phần có thể được tham chiếu thông qua số chỉ mục và tên mảng.
+ **Một chuỗi các phần tử cùng kiểu được đặt trên các vị trí bộ nhớ liên tiếp nhau, trong đó mỗi thành phần có thể được tham chiếu thông qua số chỉ mục và tên mảng.**
+ Một chuỗi các phần tử cùng kiểu đặt trên các vị trí bộ nhớ khác nhau, trong đó mỗi phần tử có thể tham chiếu thông qua số chỉ mục và tên mảng.
+ Không có đáp án đúng.
22. Đâu là bất lợi của mảng trong C++?
+ Tối ưu hóa code.
+ Dễ dàng để duyệt các phần tử của mảng.
+ **Kích thước cố định.**
+ Truy cập ngẫu nhiên.
23. Biến cục bộ là dạng biến gì? Chọn câu trả lời đúng nhất.
+ Là biến khai báo trong thân một hàm.
+ Là biến khai báo trong thân một khối lệnh.
+ **Là biến khai báo trong một hàm hoặc một khối lệnh.**
+ Là biến khai báo trong thân hàm main.
24. Lệnh nào sau đây là sai?
+ **cout<<120**
+ int x;
+ cin>>y;
+ Không có lệnh sai.
25. Cách khai báo hàm sau đây là đúng?
+ <Tên hàm> (tham số 1, tham số 2,...) {khối lệnh}
+ <Tên hàm> {khối lệnh}
+ <Kiểu dữ liệu trả về> : <Tên hàm> (tham số 1, tham số 2,...) {khối lệnh}
+ **<Kiểu dữ liệu trả về> <Tên hàm> (tham số 1, tham số 2,...) {khối lệnh}**
26. Cho biết giá trị của x và y sau khi gọi hàm Swap :
x=10;
y=20;
Swap(x,y);
```
void Swap (int x, int y)
{
int p=x;
x=y;
y=p;
}
```
+ 10,20
+ **20,10**
+ Cả hai đáp án trên đều đúng.
+ Không có đáp án đúng.
27. Chỉ số mảng bắt đầu:
+ **Từ 0 và kết thúc bằng [SIZE-1].**
+ Từ 0 và kết thúc bằng [SIZE].
+ Từ 1 và kết thúc bằng [SIZE-1].
+ Từ 1 và kết thúc bằng [SIZE].
28. Con trỏ là gì?
+ Là biến điều khiển chuột chạy trên màn hình window.
+ **Là biến dùng để lưu địa chỉ của biến khác.**
+ Là biến lưu nội dung của biến khác.
+ Không có đáp án đúng.
29. Con trỏ được sử dụng như thế nào? Chọn câu trả lời đúng nhất.
+ Dùng con trỏ để lưu địa chỉ của biến để thao tác.
+ Lấy giá trị của biến do con trỏ trỏ đến để thao tác.
+ **Cả 2 ý trên đều đúng.**
+ Cả 2 ý trên đều sai.
30. Cho đoạn code sau, kết quả của đoạn code:
```
#include <iostream>
using namespace std;
int main()
{
int a[]={6,3,5,7,8};
int *b;
b=a;
cout<<b[3]<<" "<<*(a+3);
return 0;
}
```
+ 7 và 10
+ **7 và 7**
+ 5 và 5
+ 5 và 8
31. Kích thước của kiểu dữ liệu int là bao nhiêu byte?
+ 1
+ **2**
+ 4
+ 8
32. Con trỏ NULL là gì?
+ **Là không chứa địa chỉ nào.**
+ Là con trỏ trỏ địa chỉ con trỏ khác.
+ Là con trỏ trỏ đến một hàm nào đó.
+ Là con trỏ không có kiểu, do đó nó có thể trỏ đến bất kì kiểu nào.
33. Nếu c là một kiểu số nguyên thì c-- có nghĩa là gì?
+ **Giảm biến c đi 1 đơn vị**
+ Tăng biến c lên 1 đơn vị
+ Giảm biến c đi 2 đơn vị
+ Tăng biến c lên 2 đơn vị
34. Đoạn lệnh sau có kết quả là bao nhiêu?
```
int a[]={1,2,3,4,5}
int s=0;
for (int i=0;i<5;i++)
{
s+=a[i];
}
cout<<s;
```
+ 15
+ 0
+ **Lỗi biên dịch**
+ 14
35. Để khai báo bộ nhớ động trong C++, ta dùng lệnh nào?
+ **new**
+ create
+ malloc
+ register
36. Để xóa bộ nhớ động trong C++, ta dùng lệnh nào?
+ **delete**
+ alloc
+ del
+ remove
37. Khi sử dụng con trỏ với dữ liệu cấu trúc, để sử dụng dữ liệu thành viên, ta sử dụng ký hiệu gì?
+ **Dấu "->"**
+ Dấu "."
+ Dấu ":"
+ Dấu ";"
38. Hàm overloaded là những hàm như thế nào?
+ **Các hàm trùng tên nhưng khác về cách khai báo tham số.**
+ Các hàm trùng tham số nhưng khác nhau về tên.
+ Các hàm có cùng kiểu dữ liệu trả về.
+ Không có đáp án đúng.
39. Lệnh cout trong C++ có tác dụng gì?
+ **Là stream đầu ra chuẩn trong C++.**
+ Là stream đầu vào chuẩn trong C++.
+ Là lệnh chú thích trong C++.
+ Là lệnh khai báo một biến.
40. Lệnh cout trong C++ đi kèm với cặp dấu nào trong các cặp d?
+ "\\"
+ **"<<"**
+ ">>"
+ "//"
41. Thực hiện chương trình sau sẽ cho kết quả:
```
#include <iostream>
using namespace std;
int main()
{
const float PI = 3.14;
PI = 100;
cout << "Gia tri PI = " << PI;
return 0;
}
```
+ 3,14
+ 100
+ 0
+ **Lỗi biên dịch**
42. Có bao nhiêu giá trị của a được hiện ra khi thực hiện chương trình sau:
```
#include <iostream>
using namespace std;
int main ()
{
int a = 10;
while( a < 20 )
{
cout << "Gia tri cua a: " << a << endl;
a++;
if( a > 15)
{
break;
}
}
return 0;
}
```
+ 5
+ **6**
+ 7
+ 8