Hàm có trùng tên với tên lớp, được gọi ngay sau khi khai báo đối tượng, không thể kế thừa B.. Hàm có trùng tên với tên lớp, được gọi ngay sau khi khai báo đối tượng, có thể kế thừa C.. H
Trang 2Hỏi: B sử dụng được các biến thành viên nào của A
A Không sử dụng được biến thành viên nào.
Hãy xem xét định nghĩa hàm dựng nào là đúng nhất sau đây.
A Hàm có trùng tên với tên lớp, được gọi ngay sau khi khai báo đối tượng, không thể kế thừa
B Hàm có trùng tên với tên lớp, được gọi ngay sau khi khai báo đối tượng, có thể kế thừa
C Hàm có trùng tên với tên lớp, được gọi ngay sau khi khai báo đối tượng hoặc con trỏ đối tượng, không thể kế thừa
Trang 3D Hàm có trùng tên với tên lớp, được gọi ngay sau khi khai báo đối tượng hoặc con trỏ đối tượng, có thể kế thừa
E Là một hàm có thể nạp chồng.
+++++++++++
Câu 6:
Thế nào thì được gọi là hiện tượng nạp chồng.
A Hiện tương lớp con kế thừa định nghĩa môt hàm hoàn toàn giống lớp cha.
B Hiên tượng lớp con kế thừa định nghĩa một hàm cùng tên nhưng khác kiểu với một hàm ở lớp cha.
C Hiên tượng lớp con kế thừa định nghĩa một hàm cùng tên, cùng kiểu với một hàm ở lớp cha nhưng khác các đối số.
D Hiên tượng lớp con kế thừa định nghĩa một hàm cùng tên, cùng các đối số nhưng khác kiểu với một hàm ở lớp cha
Trang 413.void nhap( )
14.{
15 Lop1 obj1; Lop2 obj2;
16 cout<<”\n\t Nhap a =”; cin>>a;
17 cout<<”\n\t Nhap x =”; cin>>x;
15 Lop1 obj1; Lop2 obj2;
16 cout<<”\n\t Nhap a =”; cin>>obj1.a;
17 cout<<”\n\t Nhap x =”; cin>>obj2.x;
Câu 10:
Trang 5Có 3 lớp khai báo như sau:
Các đối tượng objA và objB truy cập được các biến nào của lớp Lop1:
A objA truy cập được tất cả các biến objB truy cập được các biến x,y.
B objA và objB truy cập được tất cả các biến.
C objA và objB chỉ truy cập được các biến x,y.
D objA truy cập được tất cả các biến objB truy cập được các biến a,b.
E objA và objB chỉ truy cập được các biến a, b.
class Lop2: public Lop1
Trang 6class Lop2: public Lop1
Trang 7Sau khi tạo con trỏ đối tượng lớp *pobj của LopA thì dùng cú pháp nào sau đây để truy xuất thủ tục nhap( )
Trang 8cout<<”\n\t b =”;cin>>b;
} };
Nếu một đối tượng objLopA được tạo ra thì việc gán giá trị 10 vào biến a,b được thực hiện bằng cách nào:
Từ khoá protected trong một lớp có ý nghĩa:
A Khai báo các thành viên của lớp chỉ được thừa kế ;
B Khai báo các thành viên được bảo vệ;
C Khai báo các thành viên của lớp được dùng riêng
D Khai báo các thành viên của lớp sẽ được dùng chung và thừa kế.
{
a = m; b =n;
} };
Khi tạo một đối tượng bằng cú pháp
Lop objLop(4,5);
Thì hàm dựng nào sẽ được gọi.
A Hàm dựng 2
B Hàm dựng 1
C Cả 2 hàm dựng đều được gọi
D Không hàm dựng nào được gọi.
Trang 9a = m; b =n;
} };
Khi tạo một đối tượng bằng cú pháp
Lop objLop;
Thì hàm dựng nào sẽ được gọi.
A Hàm dựng 1
B Hàm dựng 2
C Cả 2 hàm dựng đều được gọi
D Không hàm dựng nào được gọi.
{
a = m; b =n;
} };
Khi tạo một đối tượng con trỏ bằng lệnh sau:
Lop *objLop;
Trang 10objLop = new Lop;
Thì hàm dựng vào được gọi
A Hàm dựng 1
B Hàm dựng 2
C Cả 2 hàm dựng đều được gọi
D Không hàm dựng nào được gọi.
{
a = m; b =n;
} };
Khi tạo một đối tượng con trỏ bằng lệnh sau:
Lop *objLop;
objLop = new Lop(3,4);
Thì hàm dựng vào được gọi
E Hàm dựng 2
F Hàm dựng 1
G Cả 2 hàm dựng đều được gọi
H Không hàm dựng nào được gọi.
Trang 11} lop (int m, int n) // Hàm dựng 2
{
a = m; b =n;
} };
Khi tạo một đối tượng con trỏ bằng lệnh sau:
Lop *objLop;
objLop = new Lop;
Thì các giá trị a và b là bao nhiêu
{
a = m; b =n;
} };
Khi tạo một đối tượng con trỏ bằng lệnh sau:
Lop *objLop;
objLop = new Lop(3,4);
Thì các giá trị a và b là bao nhiêu
Trang 12Hỏi: Khi chạy đoạn chương trình trên sẽ xảy ra hiện tượng gì?
A Hoàn toàn bình thường Không có lỗi.
B Báo lỗi không truy cập được vào biến a,b của lớp Lop1 do nằm ở phạm vi private.
C Đối tượng obj không gọi được hàm nhập.
D Lỗi do không khai báo kế thừa Lop1 của Lop2.
Trang 13Hỏi: Khi chạy đoạn chương trình trên sẽ xảy ra hiện tượng gì?
A Báo lỗi không truy cập được vào biến a,b của lớp Lop1 do nằm ở phạm vi private.
B Hoàn toàn bình thường Không có lỗi.
C Đối tượng obj không gọi được hàm nhập.
D Lỗi do không khai báo kế thừa Lop1 của Lop2.
friend class Lop2;
friend class Lop3;
Trang 14Các đối tượng objA và objB truy cập được các biến nào của lớp Lop1:
A objA và objB truy cập được tất cả các biến.
B objA truy cập được tất cả các biến objB truy cập được các biến x,y.
C objA và objB chỉ truy cập được các biến x,y.
D objA và objB chỉ truy cập được các biến a,b.
Các đối tượng objA và objB truy cập được các biến nào của lớp Lop1:
A objA và objB chỉ truy cập được các biến x,y.
B objA và objB truy cập được tất cả các biến.
C objA truy cập được tất cả các biến objB truy cập được các biến x,y.
D objA và objB chỉ truy cập được các biến a,b.
Trang 15cout<<"\n\t d =";cin>>d;
} };
Nếu tạo một đối tượng cho lớp 2 là objLop2, để gọi hàm input( ) của lớp 1 để nhập các giá trị a, b thì dùng cú pháp nào sau đây.
cout<<"\n\t d =";cin>>d;
}
Trang 16};
Nếu tạo ra đối tượng của Lop2 là objLop2 và thực hiện lệnh gọi hàm input như sau :
objLop2.Lop1::input( ); thì hàm input của lớp nào sẽ được gọi:
cout<<"\n\t d =";cin>>d;
} };
Nếu tạo ra đối tượng của Lop2 là objLop2 và thực hiện lệnh gọi hàm input như sau :
objLop2.input( ); thì hàm input của lớp nào sẽ được gọi:
Trang 17cout<<"\n\t d =";cin>>d;
} };
Nếu tạo ra đối tượng của Lop2 là objLop2 và thực hiện lệnh gọi hàm input như sau :
objLop2.input( ); thì các biến nào sẽ được nhập giá trị:
A.c và d.
B.a và b.
C.cả 4 biến a, b, c, d.
D.Không thực heịen được vì không gọi được hàm input.
E.Báo lỗi truy nhập.
{
cout<<”\n\t Tong 2 so la “<<a +b;
} };
class B; public A
{
void tinhtoan( )
Trang 18cout<<”\n\t Tich 2 so la “<<a*b;
} };
Nếu tạo ra đối tượng objB thuộc lớp B, khi gọi hàm nhap( ) thì hàm tinhtoan của lớp nào sẽ được gọi.
{
cout<<”\n\t Tong 2 so la “<<a +b;
} };
Nếu tạo ra đối tượng objB thuộc lớp B, khi gọi hàm nhap( ) thì hàm tinhtoan của lớp nào sẽ được gọi.
Trang 19A.Xác định hàm đó sẽ chuyển thành dạng đa hình.
cout<<"\n\t a =";cin>>a;
} };
Trang 20cout<<"\n\t a =";cin>>a;
} };
Trang 21cout<<"\n\t a =";cin>>a;
} };
Trang 22cout<<"\n\t a =";cin>>a;
} };
Trang 23cout<<"\n\t a =";cin>>a;
} };
Trang 25} };
class LopB:public LopA
A.Nhận một chuỗi vàn bản và đổi sang chữ hoa.
B.Nhận chuỗi văn bản và đổi sang chữ thường.
C.Nhận chuỗi văn bản và đổi đồng thời sang chữ hoa và chữ thường.
D.Chương trình không thay đổi gì.
} };
Trang 26class LopB:public LopA
A.Nhận chuỗi văn bản và đổi sang chữ thường.
B.Nhận một chuỗi vàn bản và đổi sang chữ hoa.
C.Nhận chuỗi văn bản và đổi đồng thời sang chữ hoa và chữ thường.
D.Chương trình không thay đổi gì.
cout<<”\n\t Nhap so thu nhat : “;cin>>f1;
cout<<”\n\t Nhap so thu hai : “;cin>>f2;
} };
Khi tạo ra đối tượng objTest thì dùng lệnh nào sau đây để nhập giá trị vào cho biến x và biến y.
Trang 27float f1,f2;
cout<<”\n\t Nhap so thu nhat : “;cin>>f1;
cout<<”\n\t Nhap so thu hai : “;cin>>f2;
x = f1 ; y = f2;
} };
Khi tạo ra đối tượng objTest thì dùng lệnh nào sau đây để nhập giá trị vào cho biến x và biến y.
Khi tạo ra một đối tượng objTest của lớp, để gọi hàm tong thì dùng cú pháp nào sau đây:
A.float KQ = objTest.tong(objTest.x, objTest.y);
Trang 28float s = f1 + f2;
cout<<s;
} };
Khi tạo ra một đối tượng objTest của lớp, để gọi hàm tong thì dùng cú pháp nào sau đây:
Câu 1. Chọn các khai báo đúng trong các khai báo sau:
A int *pn; pn = new int B int *pn; &pn = new int[100];
C float *px; px = new float; D float *px; *px = new float;
Câu 2. Chọn câu Sai : trong một chương trình C++, có thể không có:
A phần khai báo hằng B phần đầu chương trìnhC phần thân chương trình D phần khai báo biến
Câu 3. Trong C++, lệnh nào có tác dụng xóa màn hình :
Câu 4. Kết quả xuất ra khi biên dịch khối lệnh sau :
int num=5, sum=0;
cout << "The sum is " << sum << endl;
A. The sum is 9 B. The sum is 5 C. The sum is 15 D. The sum is 0
Câu 5. Cho biết giá trị của của các biến sau khi đọan chương trình trên được thực thi?
Trang 29B. đặt ngay sau dấu { đầu tiên của thân hàm và cần đứng sau câu lệnh clrscr().
C đặt ngay sau dấu { đầu tiên của thân hàm và cần đứng trước mọi câu lệnh khác.
D. đặt trước câu lệnh tiền xử lý (từ khoá : include)
Câu 8. cho biết đoạn chương trình sau khi thi hành xuất ra màn hình kết quả gì?
A Tất cả các câu trên đều sai B 32767 C Không in gì cả D 50000
Câu 9. Hãy cho biết giá trị của b sau đoạn chương trình:
int a=1,b=(a)?1:2;
b+=1;
Câu 10. lệnh cout nằm trong thư viện nào sau đây:
Câu 11. Cho biết kết quả xuất ra của chương trình sau đây trên màn hình là gì?
int1 = 120;
cin >> int2; // Giả sử người sử dụng nhập vào 30
if ((int1 > 100) && (int2 = 50))
int3 = int1 + int2;
else
int3 = int1 - int2;
cout << int1 << ' ' << int2 << ' ' << int3;
Câu 12. cho biết kết quả của biểu thức !( 2>1 || 1>2 )
Trang 30A. TRUE B. 0 C. 1 D. FALSE
Câu 13. cho biết kết quả của đoạn chương trình sau:
int a=5,b=9;
int m=a>b ? a++ : b++;
int n=a<b ? a : b;
Câu 16. Cho biết kết quả xuất ra của chương trình sau đây trên màn hình là gì?
void fun(int & a, int b)
Câu 17. Cho đoạn mã sau:
void G(int &x, float y)
Trang 31Câu 19. Cho biết kết quả xuất ra của chương trình sau đây trên màn hình là gì?
Câu 21. Để viết hàm không trả về kết quả cho hàm tính diện tích s hình tròn khi cho bán kính r ta viết dòng
tiêu đề hàm như sau:
A. float Tinh_DT(float r, float &s); B. void Tinh_DT(float r, float s);
C void Tinh_DT(float r, float &s); D int Tinh_DT(float r, float &s);
Câu 22. Chọn khẳng định đúng nhất
A Cả ba khẳng định đều sai.
B Trong C++ cho phép viết các hàm cùng tên nhưng danh sách tham số khác nhau
C. Trong C++ không cho phép viết các hàm cùng tên mặc dù danh sách tham số khác nhau
D. Trong C++ cho phép viết các hàm cùng tên và danh sách tham số như nhau
Câu 23. cho biết kết quả của đoạn chương trình sau:
Trang 32Câu 25. cho biết kết quả của biểu thức sqrt(4)+abs(12-16)-pow(2,3)
Câu 26. Trong ngôn ngữ C++ để cấp phát bộ nhớ cho một con trỏ có thể dùng hàm hay toán tử:
Câu 27. Để viết hàm nhập giá trị cho một biến cấu trúc phân số (PS) ta khai báo tiêu đề hàm như sau:
A. float NhapPS(PS &p);B. float NhapPS(PS p);C. void NhapPS(PS &p);D. void NhapPS(PS p);
Câu 28. cho biết kết quả của biểu thức (5/3+1)%4
Câu 31. lệnh nào sau đây sẽ nhập số từ bàn phím
Câu 32. Cho biết khai báo tiêu đề hàm nào viết sai?
A. int F(int x , float y , char s []= "abc"); B. void F(int x , float y =1, char chr='A');
C. void F (int x, float y, char *s); D. int F(int x = 0, float y = 1, char ch);
Câu 33. Cho biết giá trị của a,b,c sau khi đọan chương trình được thực thi
int bla(int x, int &y)
Trang 33Câu 35. Chọn câu lệnh sai:
A cout.width(5); cout<<x; B cout.width(5); cout>>x;
C cout.precision(2);cout<<x; D cả ba phương án đều sai.
Câu 36. Trong C++ ta có thể khai báo ở:
A. Cả hai phương án trên đều đúng B. Cả hai phương án trên đều sai
C. Bất kỳ vị trí nào trong một phạm vi cho trước D. Phải khai báo ở đầu của phạm vi
Câu 37. Để đa năng hóa các toán tử, các đối tượng có thể là:
A cấu trúc và cả các kiểu dữ liệu khác B lớp (class)
Câu 38. Cho biết kết quả của chương trình sau
Trang 34void H( char &ch, int x)
char c = 'a'; int n = 3;
H(n, c);
cout<< c<<" "<<n;
} Khi chạy chương trình dòng in đậm trên in ra kết quả:
case 6: cout << "hello." << endl; break;
case 7: cout << "good morning." << endl; break;
case 8: cout << "good afternoon." << endl;
}
A Không xuất ra gì cả trên màn B hello C good morning D good afternoon.
Câu 43. Cho khai báo hàm sau: void NhapDL( float x, int y, int z = 10)
Chọn cách gọi hàm đúng trong các cách gọi hàm sau:
A NhapDL(2.5); B NhapDL(); C.NhapDL(2.5, 3); D NhapDL(2.5, 5.5, 8);
Câu 44. Cho đoạn chương trình sau:
if (i == j) {
cout << "A" << endl;
}
else if ((i % j) < 3) {
Trang 35Câu 45. Cho khai báo biến :
Lệnh nào sai:
Câu 46. Khẳng định nào Sai: trong C++,
A. để mở một tập tin cũ, gõ phím F1
B. để lưu chương trình lên đĩa, gõ phím F2 hoặc chọn lệnh File/Save
C. để tìm lỗi cú pháp của chương trình, gõ phím Alt_F9 hoặc chọn lệnh Compile/ Compile
D. để chạy chương trình, gõ phím Ctrl-F9 hoặc chọn lệnh Run/Run
Câu 47. cho biết kết quả của đoạn chương trình sau:
int a=4,b=3;
int t = a <= b ? a:b;
cout<<t;
Câu 48. Chọn tên đặt sai, trong các tên sau:
Câu 49. Chọn các phát biểu đúng trong các phát biểu sau:
A Các phương thức của lớp có thể có đối hoặc không có đối.
B cả hai đáp án đều sai
C Giá trị trả về của phương thức trong một lớp có thể có kiểu bất kỳ (kiểu chuẩn và ngoài chuẩn).
Trang 36Câu 53. Cho biết giá trị của x=15/-4 và y=15%-4
Câu 54. Chọn phát biểu sai:
A Dấu cách là một ký tự trong tập ký tự của ngôn ngữ C++, nó dùng để tách các từ
B. Dòng chú thích là một lệnh trong chương trình
C Mỗi chữ cái, chữ số hoặc ký hiệu được gọi là một ký tự (character) trong ngôn ngữ C.
D Ngôn ngữ C++ không dùng chữ có dấu Tiếng Việt.
Câu 55. Biểu thức nào sau đây có giá trị bằng 0:
A (4 + 2 > 5) && (2 < 4 / 2) B ( 10>7 ) && ('a' < 'A' )
C 3 * (2+ 1) >= 10 % 4* 2 D (3 + 2 <= 5) || (2 < 4 % 2)
Câu 56. Giả sử có con trỏ p: int *p;
Để giải phóng vùng nhớ trỏ bởi con trỏ p ta viết:
Câu 57. Cho biết giá trị của của các biến sau khi đọan chương trình trên được thực thi?
x=9;
y = 3;
x = ++y;
A x = 4, y = 4; B x = 3, y = 4; C x = 9, y = 4; D x = 10, y = 4;
Câu 58. Hãy chọn các khẳng định đúng trong các khẳng định sau:
A. Một chương trình hướng đối tượng sẽ bao gồm các lớp có quan hệ với nhau
B. Lập trình hướng đối tượng là sự mở rộng của lập trình cấu trúc bằng cách đưa thêm các phương thức (method)
C. Lập trình hướng đối tượng không có sự kế thừa từ lập trình cấu trúc
D. Lớp có thể xem như sự kết hợp của các thành phần dữ liệu và các hàm
Câu 59. Viết hàm DoiCho để hoán đổi giá trị hai số thực x và y ta khai báo dòng tiêu đề như sau:
A void DoiCho(float &x, float &y); B void DoiCho(float x, float &y);
C void DoiCho(float x, float y); D void DoiCho(float &x, float y);
Trang 37Câu 60. Trong C++, nếu muốn dùng lệnh xóa màn hình thì phải khai báo câu lệnh tiền xử lý thư viện nào:
A <iostream.h> B <conio.h> C không khai báo gì cả D <stdio.h>
Câu 61. cho biết kết quả của đoạn chương trình sau:
Kết quả của đoạn chương trình trên là:
A. The minimum is 63 B. Các câu trả lời khác đều sai
Trang 38Câu 2. Chọn các phương án đúng cho mệnh đề sau:
Trong các phương thức của lớp dẫn xuất, có thể truy nhập trực tiếp tới:
A Các thuộc tính của các đối tượng thành phần B Các thuộc tính trong chính phương thức đó.
C. Các thuộc tính của lớp cơ sở D. Các thuộc tính mới khai báo trong lớp dẫn xuất
Câu 3. Để xây dựng hàm tạo sao chép ta viết dòng tiêu đề như sau
A. Tên_Lớp ( Tên_lớp & tham_số); B. Tên_Lớp (const Tên_lớp & tham_số);
C int Tên_Lớp (const Tên_lớp & tham_số); D void Tên_Lớp (const Tên_lớp & tham_số);
Câu 4. Giả sử cho các lớp như trong khai báo dưới đây Chỉ ra kết quả hiển thị của đoạn chương trình viết dưới đây:
C Giá trị của x và y là không xác định D x không xác định và y = 2.5
Câu 5. class A là bạn của class B, class B là bạn của class C
A class C có thể truy xuất đến các thành viên private của class A
B. class B có thể truy xuất đến các thành viên private của class C
C. class B có thể truy xuất các thành viên của class A
D. class A có thể truy xuất các thành viên private của class C
Câu 6. Cho biết khẳng định đúng nhất trong các khẳng định sau:
A Hàm bạn của lớp có thể truy xuất (gọi) đến các thành phần private của lớp
B Cả hai đáp án đều đúng.
C. Cả hai đáp án đều sai
D. Phương thức của lớp có thể truy xuất (gọi) đến các thành phần private của lớp
Câu 7. Toán tử nào có thể được viết lại trong C++
A. :: (toán tử xác định phạm vi) B. ?: (toán tử điều kiện)
C sizeof (toán tử xác định kích thước dữ liệu) D = (toán tử gán)
Câu 8. Cho biết kết quả hiển thị của đoạn chương trình sau?