ĐỀ THI MU CUI K MÔN K THUT LP TRÌNH
(Gm 3 phn: Basics Recursion and Pointer OOP kèm 2 câu t lun)
Lưu ý: các đáp án điền vào không có du cách bt c đâu, trừ trường hợp đề yêu cu
PART 1: BASIC (10 câu)
1. Cú pháp khai báo biến nào sau đây là không hp l?
A. _long
B. short
C. myNum
D. a8bi
2. Cho đoạn code sau:
string name;
cin >> name;
cout << “Your name is: ” << name;
Khi người dùng nhp vào: Nguyen Van A, kết qu in ra màn hình là?
A. Your name is Nguyen Van A
B. Your name is Nguyen
C. Your name is A
D. Your name is Nguyen Van
3. Cho câu lnh sau:
float a[5] = {1.0, 2.0, 3.0, 4.0, 5.0};
Câu lệnh nào sau đây dùng để in ra giá tr ca phn t đầu tiên ca mng a?
A. cout << a << ‘\n’;
B. cout << a[0] << \n’;
C. cout << &a[0] << ‘\n’;
D. Không có câu nào đúng
4. Cho đoạn code sau:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s = “microsoft”;
cout << s.substr(0, 2);
}
Kết qu khi in ra màn hình là?
Đin câu tr li đây:
5. Cho đoạn code sau:
int a[5] = {1,2,3,4,5};
for (int i = 0; i < 5; i += 2)
{
a[i]--;
cout << a[i--];
}
Kết qu khi chạy chương trình là?
Đin câu tr li đây (nếu như chương trình có lỗi, hãy ch ra dòng lnh b li):
6. Cho đoạn code sau:
#define sub(a,b) a-b
cout << 3*sub(5*2,3*3) + 1;
Kết qu của chương trình là?
A. 4
B. -2
mi
lay tu index, do dai la len
a0 = 0
0
i = -1
i = 1
a1 = 1
1
i = 0
01234
22
C. 0
D. Chương trình có lỗi
7. Cho đoạn code sau:
double pi = 3.1416;
cout << '*' << setw(7) << setprecision(7) << pi << "*\n";
Kết qu của chương trình là?
A. *3.1416*
B. * 3.1416*
C. *3.1416000*
D. * 3.1416000*
8. Cho đoạn code sau:
int s = 1, i = -3;
while(i++)
{
s -= i;
}
cout << s + (2 >> --i);
Khi thay đổi dòng while(i++) thành while(++i) thì kết qu của chương trình lúc sau là?
Đin câu tr li vào đây (nếu như không có s thay đổi output của chương trình, ghi no_change,
nếu chương trình gặp li, hãy ch ra dòng lnh b li):
9. Cho đoạn code sau:
for (int i = 0; i < 10; i++) // line 1
{
if (++i > 2) break; // line 2
}
2
Khẳng định đúng là:
A. Li line 1
B. Chương trình lặp 2 ln
C. Li line 2
D. Chương trình lặp 3 ln
10. Khi nói v string, khẳng định nào sau đây là đúng?
A. String có độ dài c định
B. Mt object có kiu string luôn kết thúc bng ký t \0’
C. String có độ dài động
D. Không th truy xut phn t bt k trong string
PART 2: Recursion and Pointer (10 câu)
11. Cho đoạn chương trình dùng để tính giai tha ca 1 s n như sau:
typedef unsigned long long int ull;
ull foo (int n)
{
if (n == 0)
{
return 1;
}
return n * foo(n--);
}
Khng định đúng khi thực hin lnh foo(5) là?
A. Chương trình không có lỗi, kết qu là 120
B. Chương trình không có lỗi, kết qu là 0
C. Chương trình không chạy được, b li Stack Overflow
D. C 3 câu trên đều sai
12. Cho hàm đệ quy sau:
int foo(int a, int b)
{
static int m = b; // Line 0
if (m % a == 0 && m % b == 0)
{
return m;
}
m += b;
return foo(a, b);
}
Biết rng khi thc hin lnh foo(5, 4) thì kết qu là 20. B t khóa static Line 0 đi và thực
hin li lnh foo(5, 4), khẳng định nào sau đây không đúng?
A. Chương trình bị li Stack Overflow
B. T khóa static Line 0 giúp cho giá tr ca biến được lưu lại và s dng cho các ln gi
hàm sau
C. Có th khai báo int m = 0 ngoài hàm foo (biến cc b), trong hàm foo đưa dòng m += b lên
thay thế v trí ca Line 0 thì chương trình vẫn in ra giá tr 20
D. C 3 câu đều sai
13. Cho đoạn code sau:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s = “microsoft”;
for (auto it = s.rbegin(); it != s.rend(); ++it)
{
khac \0