400 Câu hỏi trắc nghiệm lập trình C/C++ có đáp án và lời giải chi tiết
Tổng hợp câu hỏi trắc nghiệm lập trình C/C++ có đáp án và lời giải đầ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)
Chọn phần
-
Câu 1:
What is the output of the following code?
#include <iostream> using namespace std; int main() { int a = 20, b = 100; int &n = a; n = a++; n = &b; cout << a << "," << n << endl; system("pause"); }
A. 21,21
B. 20,21
C. 21,22
D. compile error
-
Câu 2:
What is the output of the following code?
#include <iostream> using namespace std; int main() { int main; main = 100; cout << main++ << endl; system("pause"); }
A. 100
B. 101
C. none
D. compile error
-
Câu 3:
The design of classes in a way that hides the details of implementation from the user is known as:
A. Encapsulation
B. Information Hiding
C. Data abstraction
D. All of the above
-
Câu 4:
Which of the following keywords do you think can be used when declaring static members in a class?
(i) Public
(ii) Private
(iii) Protected
A. all of above
B. (i)
C. (i), (iii)
-
Câu 5:
I want a nonmember function to have access to the private members of a class. The class must declare that function:
A. friend
B. inline
C. static
D. virtual
-
Câu 6:
The ability to reuse objects already defined, perhaps for a different purpose, with modification appropriate to the new purpose, is referred to as
A. Information hiding
B. Inheritance
C. Redefinition
D. Overloading
-
Câu 7:
What do you think is the outcome of calling a redefined non-virtual function using a base-class pointer?
A. The appropriate redefined version of the function will be used
B. The base-class version of the function will always be used
C. The outcome is unpredictable
D. A run-time error will occur
-
Câu 8:
A class member that is to be shared among all objects of a class is called
A. A const member
B. A reference parameter
C. A static member
D. A function member
-
Câu 9:
What is a base class?
A. An abstract class that is at the top of the inheritance hierarchy.
B. A class with a pure virtual function in it.
C. A class that inherits from another class
D. A class that is inherited by another class, and thus is included in that class.
-
Câu 10:
A variable that is declared protected:
A. Is visible only in the subclasses (and not in the class it is declared in)
B. Is visible only in the class it is declared in
C. Is visible to all classes, but modifiable only in the class where it is declared
D. Is visible in the class it is declared in, and all of its sub-classes
-
Câu 11:
What is a destructor?
A. A function called when an instance of a class is initialized
B. A function that is called when an instance of a class is deleted
C. A special function to change the value of dynamically allocated memory
D. A function that is called in order to change the value of a variable
-
Câu 12:
In protected inheritance:
A. The public members of the base class become public
B. The public members of the base class become protected
C. The protected members of the base class become private
D. The public members of the base class become inaccessible
-
Câu 13:
If a class declares a variable static, this means:
A. Each instance of a class will have its own copy of the variable
B. Changing the variable in one instance will have no effect on other instances of the class
C. Changing the variable in one instance will have no effect on other instances of the class
D. Every instance of the class must consider the value of the static variable before initializing
-
Câu 14:
In case of a copy constructor, which of the following is true?
A. Used to instantiate an object from another existing object
B. To copy one object to another existing object
C. Can be a substitute for a ‘=’ operator
D. All of the above
-
Câu 15:
A class declaring another class as a friend will:
A. Have wine and cheese with that other friend
B. Allow that class to declare an instance of it in its list of private variables
C. Allow the other class (the one declared as friend) to access to the declaring class’s private variables
D. Allow the class declaring the other as a friend to access the declared class’s private variables
-
Câu 16:
Which of the following can be virtual?
A. constructors
B. destructors
C. static functions
D. None of the above
-
Câu 17:
Where is an exception generated?
A. In the catch block
B. In the throw clause
C. In the constructor of a class
D. Only when memory allocation fails
-
Câu 18:
Static member functions ___
A. can be used without an instantiation of an object
B. can only access static data
C. Both 1 and 2 are correct
D. Neither 1 nor 2 are correct
-
Câu 19:
What makes a class abstract?
A. The class must not have method
B. The class must have a constructor that takes no arguments
C. The class must have a function definition equal to zero
D. The class may only exist during the planning phase
-
Câu 20:
In the following program, how many times Base’s constructor will be called?
#include <iostream> using namespace std; class Base { int static i; public: Base() { cout << "Base's constructor"; }; }; class Sub1 : public virtual Base {}; class Sub2 : public Base {}; class Multi : public Sub1, public Sub2 {}; void main() { Multi m; system("pause"); }
A. 1
B. 2
C. 3
D. error
-
Câu 21:
In the following code what would be the values of i1 and i2
#include <iostream> using namespace std; namespace N1 { int f(int n) { return n * 2; } } namespace N2 { int f(double n) { return n * 3; } } void main() { using N1::f; int i1 = f(1.0); cout << "i1 = " << i1; using N2::f; int i2 = f(1.0); cout << "i1 = " << i2; system("pause"); }
A. i1=2 i2=2
B. i1=2 i2=3
C. i1=3 i2=2
D. Error
-
Câu 22:
In the following code, which of the following variables can be accessed in “Friend”?
class Base { public: int a; protected: int b; private: int c; }; class Derived : Base { int d; friend Friend; }; class Friend { Derived derived; };
A. only a and b
B. a,b and c
C. only a
D. error
-
Câu 23:
What is the output of the following code?
#include <iostream> int count = 0; class obj { public: obj() { count++; } ~obj() { count--; } }; int main() { obj A, B, C, D, E; obj F; { obj G; } std::cout << count; return 0; }
A. 0
B. 5
C. 6
D. 7
-
Câu 24:
What is wrong in the following code?
#include <iostream> class Base { public: Base() {}; virtual ~Base() {}; }; class Derived : protected Base { public: virtual ~Derived() {}; }; int main() { Base *pb = new Derived(); return 0; }
A. There is nothing wrong
B. One cannot have a ‘Base’ pointer to ‘Derived’ since it is not derived publicly
C. One need a derived class pointer to point to a derived class
D. One required to code a constructor for Derived
-
Câu 25:
What is the output of the following code?
#include <iostream> using namespace std; class professor { public: professor() { cout << "professor "; }; }; class researcher { public: researcher() { cout << "researcher "; }; }; class teacher : public professor { public: teacher() { cout << "teacher "; }; }; class myprofessor : public teacher, public virtual researcher { public: myprofessor() { cout << "myprofessor "; }; }; int main() { myprofessor obj; system("pause"); return 0; }
A. professor researcher teacher myprofessor
B. researcher professor teacher myprofessor
C. myprofessor teacher researcher professor
D. myprofessor researcher professor teacher
-
Câu 26:
What is the output of the following code?
#include <iostream> using namespace std; class Parent { public: Parent() { Status(); } virtual ~Parent() { Status(); } virtual void Status() { cout << "Parent "; } }; class Child : public Parent { public: Child() { Status(); } virtual ~Child() { Status(); } virtual void Status() { cout << "Child "; } }; void main() { Child c; }
A. Parent Parent
B. Parent Child Child Parent
C. Child Parent Parent Child
D. Error
-
Câu 27:
What is wrong in the following code?
#include <iostream> using namespace std; class Base { public: virtual void Method() = 0 { n = 1; } private: int n; }; class D1 :Base {}; class D2 :public D1 { int i; void Method() { i = 2; } }; int main() { D2 test; return 0; }
A. There is no error
B. There is a syntax error in the declaration of “Method”
C. Class D2 does not have access to “Method”
D. Class D1 must define “Method”
-
Câu 28:
Quy tắc đặt tên biến nào sau đây là đúng?
A. Là một chuỗi gồm một hoặc nhiều ký tự chữ, số hoặc ký tự gạch dưới, bắt đầu bằng một ký tự hoặc dấu gạch dưới.
B. Không chứa các ký hiệu Đểc biệt hoặc dấu cách.
C. Không trùng với các từ khoá.
D. Tất cả các quy tắc đầu đúng.
-
Câu 29:
Kích thước của dữ liệu kiểu char là bao nhiêu byte?
A. 1
B. 2
C. 4
D. 8
-
Câu 30:
Khai báo biến nào sau đây là SAI?
A. double d = 3.14;
B. int num = 10;
C. long lint = 8;
D. short int = 5;
-
Câu 31:
Khai báo nào sau đây là ĐÚNG?
A. signed a;
B. sign double d;
C. unsign int i;
D. longth t;
-
Câu 32:
Biến toàn cục là gì?
A. Biến khai báo trong thân một hàm hoặc một khối lệnh.
B. Biến khai báo trong thân main, hoặc bên ngoài tất cả các hàm.
C. Cả hai đáp án đầu đúng.
-
Câu 33:
Biến cục bộ là dạng biến gì? Chọn câu trả lời đúng nhất.
A. Là biến khai báo trong thân hàm main
B. Là biến khai báo trong thân một khối lệnh
C. Là biến khai báo trong thân một hàm
D. Là biến khai báo trong một hàm hoặc một khối lệnh
-
Câu 34:
Chuỗi ký tự (string) là gì?
A. Các giá trị không phải là số và có độ dài là 1
B. Các giá trị số lớn hơn 0
C. Các biến có giá trị true hoặc false
D. Các giá trị cả chữ và số, nằm trong 2 dấu nháy “” và kết thúc với ký tự null
-
Câu 35:
Lệnh nào sau đây là SAI?
A. string s = 1234;
B. string s (“Hello world!”);
C. string s = “Hello world!”;
D. Tất cả đầu đúng
-
Câu 36:
Khai báo nào sau đây là SAI?
A. char c = “a”;
B. int i = 75ul;
C. int i = 0013;
D. int i = 0x4b;
-
Câu 37:
Lệnh nào sau đây định nghĩa một hằng giá trị?
A. const PI = 3.1415;
B. #define PI 3.1415
C. #define PI = 3.1415
D. const float PI;
-
Câu 38:
Đoạn lệnh sau có kết quả bao nhiêu?
A. Một giá trị bất kỳ
B. 5
C. 7
D. Lỗi biên dịch
-
Câu 39:
Lệnh nào sau đây là SAI?
A. cout << 120;
B. Không có lệnh sai
C. int x; cout << x;
D. int age = 33; cout << “My age is “ << age << “.\n”;
-
Câu 40:
Nguyên lý của cấu trúc while là:
A. Chương trình sẽ lặp đi lặp lại khối lệnh cho đến khi biểu thức điều kiện bằng 0.
B. Chương trình sẽ lặp đi lặp lại khối lệnh cho đến khi biểu thức điều kiện sai.
C. Chương trình sẽ lặp đi lặp lại khối lệnh cho đến khi biểu thức điều kiện đúng.
D. Không có đáp án đúng.
-
Câu 41:
Kết quả đoạn lệnh sau là bao nhiêu?
For (int i = 0; i < 3; i++) cout << i*i << “,”;
A. Lỗi biên dịch
B. 0,1,4,9,
C. Lặp vĩnh viễn
D. 0,1,4,
-
Câu 42:
Kết quả đoạn lệnh sau là bao nhiêu?
For (int i = 0; i <= 3; i++) cout << i*i << “,”;
A. 0,1,4,
B. Lặp vĩnh viễn
C. Lỗi biên dịch
D. 0,1,4,9,
-
Câu 43:
Kết quả đoạn lệnh sau là bao nhiêu?
For (;;) cout << i*i << “,”;”
A. Lỗi biên dịch
B. Lặp vĩnh viễn
C. 0,1,4,
D. 0,1,4,9,
-
Câu 44:
Kết quả đoạn lệnh sau là bao nhiêu?
For (int i = 0,n = 4; n != i; i++,n--) cout << i << “,”;
A. Lặp vĩnh viễn
B. 0,1,2,
C. Lỗi biên dịch
D. 0,1,
-
Câu 45:
Kết quả đoạn lệnh sau là bao nhiêu? For (int i = 0,n = 5; n != i; i++,n--) cout << i << “,”;
For (int i = 0,n = 5; n != i; i++,n--) cout << i << “,”;
A. 0,1,2,
B. Lặp vĩnh viễn
C. Lỗi biên dịch
D. 0,1,
-
Câu 46:
Cách khai báo hàm nào sau đây là đúng?
A. <Tên hàm> { Khối lệnh }
B. <Kiểu dữ liệu trả về> <Tên hàm> (Tham số 1, Tham số 2,..) { Khối lệnh }
C. <Tên hàm> (Tham số 1, Tham số 2,..) { Khối lệnh }
D. <Kiểu dữ liệu trả về> :<Tên hàm> (Tham số 1, Tham số 2,..) { Khối lệnh }
-
Câu 47:
Thế nào là truyền tham trị? Chọn câu trả lời đúng nhất
A. Truyền bản sao của tham số vào biến. Tất cả các thay đổi của biến được thực hiện bởi hàm không ảnh hưởng đến giá trị của biến bên ngoài hàm.
B. Truyền địa chỉ của biến vào hàm.
C. Truyền giá trị của tham số vào biến.
D. Truyền bản sao của biến vào hàm chứ không phải là bản thân biến.
-
Câu 48:
Thế nào là truyền tham biến? Chọn câu trả lời đúng nhất
A. Truyền giá trị của tham số vào biến.
B. Truyền bản sao của tham số vào biến. Tất cả các thay đổi của biến được thực hiện bởi hàm không ảnh hưởng đến giá trị của biến bên ngoài hàm.
C. Truyền địa chỉ của biến vào hàm.
D. Truyền bản sao của biến vào hàm chứ không phải là bản thân biến.
-
Câu 49:
Hàm overloaded là những hàm như thế nào?
A. Các hàm trùng tên nhưng khác về cách khai báo tham số
B. Các hàm có cùng kiểu dữ liệu trả về
C. Không có đáp án đúng
D. Các hàm trùng tham số những khác nhau về tên
-
Câu 50:
Mảng là gì? Chọn câu trả lời đúng nhất
A. 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.
B. 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.
C. 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.
D. Không có đáp án đúng