Câu 1. Giá trị nhỏ nhất của biễn kiểu unsigned char là:
a) ‘a’ b) 0 c) –128
Câu 2. Dòng lệnh: int c = 0; cout << c++ << c; cho in ra màn hình:
a) 00 b) 01 c) 10
Câu 3. Biểu thức trong vòng lặp for(x = 0; x = 3; x++) được thực hiện bao nhiêu lần:
a) 0 b) 3 c) vô cùng
Câu 4. Cho hàm
int fn(int x) { if (x == 0 || x == 1) return 1;
if (x % 2 == 0) return (fn(x / 2) + 2);
return (fn(x – 1) + 3); }
fn(6) trả về giá trị:
a) 7 b) 8 c) 11
Câu 5. Cho đoạn khai báo: int A[10], *p = A + 4; Khi sử dụng biến p trong biểu thức thì *(p - 2) là:
a) Giá trị của A[4] b) Địa chỉ của A[4] c) Giá trị của A[2]
Câu 6. Nếu char s[] = “0123456789”; thì chỉ số cuối cùng của mảng s là:
a) 11 b) 10 c) 9
Câu 7. Dòng nào không đúng trong C:
a) /* A comment */ b) class aClass{public:int x;}; c) char x=12;
3 trang |
Chia sẻ: thanhle95 | Lượt xem: 718 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Đề thi lần 1 môn Lập trình - Đề số 2, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
ĐỀ THI LẦN 1
Môn Lập trình
Thời gian 60 phút
(Được sử dụng tài liệu) Đề số 2
Câu 1. Giá trị nhỏ nhất của biễn kiểu unsigned char là:
a) ‘a’ b) 0 c) –128
Câu 2. Dòng lệnh: int c = 0; cout << c++ << c; cho in ra màn hình:
a) 00 b) 01 c) 10
Câu 3. Biểu thức trong vòng lặp for(x = 0; x = 3; x++) được thực hiện bao nhiêu lần:
a) 0 b) 3 c) vô cùng
Câu 4. Cho hàm
int fn(int x) { if (x == 0 || x == 1) return 1;
if (x % 2 == 0) return (fn(x / 2) + 2);
return (fn(x – 1) + 3); }
fn(6) trả về giá trị:
a) 7 b) 8 c) 11
Câu 5. Cho đoạn khai báo: int A[10], *p = A + 4; Khi sử dụng biến p trong biểu thức thì *(p - 2) là:
a) Giá trị của A[4] b) Địa chỉ của A[4] c) Giá trị của A[2]
Câu 6. Nếu char s[] = “0123456789”; thì chỉ số cuối cùng của mảng s là:
a) 11 b) 10 c) 9
Câu 7. Dòng nào không đúng trong C:
a) /* A comment */ b) class aClass{public:int x;}; c) char x=12;
Câu 8. Hàm nào là hàm tạo copy của lớp Aclass:
a) Aclass(Aclass& a) b) Aclass() c) ~Aclass()
Câu 9. Trường hợp nào lớp D có thể truy cập vào vùng protected của lớp B:
a) class B {}; b) class D { c) class B {};
a) class D {}; b) class B {}}; c) class D: public B {};
Câu 10. Để tìm vị trí của giá trị 5 trong mảng 1 2 3 4 5 6 7 8 bằng thuật toán chia đôi, cần tìm chỉ số trung bình
bao nhiêu lần:
a) 2 b) 3 c) 4
Câu 11. Đâu là lệnh giải phóng biến p đã cấp phát:
a) delete p; b) delete p[]; c) delete []p;
Câu 12. Cho đoạn chương trình:
struct stack {struct node { char c; node *next; } *top;};
char Pop(stack *s){
stack::node *p = s->top; . . .
char c = p->c; delete p;return c;}
Đoạn lệnh ở . . . là:
a) s->top = p->next;
b) p->next = s->top;
c) p->next = s->top; s->top = p;
Câu 13. Thuật toán sắp xếp nào là tối ưu đối với mảng: 1 2 3 5 4
a) Bubble sort b) Quick sort c) Insert sort
Câu 14. Cây nhị phân chứa các chữ cái được biểu diễn bằng mảng (0 – nút rỗng): A B C D E F 0 G 0 H. Khi
duyệt cây theo thứ tự sau sẽ cho:
a) G D H E B F C A b) G H D B E F C A c) H G D E B F C A
Câu 15. Cho char A[10] = {1, 2, 3, 4, 5, 6}; short *p = (short *)&A[1]; *p = 10; Bốn phần tử đầu tiên của A sẽ
CuuDuongThanCong.com https://fb.com/tailieudientucntt
là:
a) 1, 2, 10, 4 b) 1, 2, 0, 10 c) 1, 10, 0, 4
Câu 16. Toán tử [] của class có mấy tham số:
a) 2 b) 1 c) 0
Câu 17. Biểu thức 1 & 4 cho giá trị:
a) 0 b) 1 c) 4
Câu 18. strcmp(“Abc”, “abc”) cho giá trị:
a) âm b) dương c) 0
Câu 19. Đâu là lệnh cấp phát biến:
a) char p=new char[20]; b) char *p=new char; c) char p=new char(20);
Câu 20. Biểu thức 1/9*9 cho giá trị:
a) 1 b) 0.0862 c) 0
Câu 21. Cho chương trình sau:
1
2
3
4
5
6
7
8
class Vect
{
protected:
int size;
double *data;
public:
Vect(): size(0), data(NULL)
Vect(int sz): size(sz) { data = new double[size]; }
Vect(double *v, int sz): size(sz), data(v) {}
Vect(int sz, const double v)
{
size = sz;
data = new double[size];
for (register int i = 0; i < size; i++)
data[i] = v[i];
}
~Vect() { if (data) delete[] data; }
public:
int GetSize() { return size; }
double& operator[](int index) { return data[index]; }
};
class Sort: public Vect
{
public:
Sort(int sz, const double *v): Vect(sz, v) {}
protected:
void Swap(int i, int j) { double t = data[i]; data[i] = data[j];
data[j] = t; }
virtual Sort& DoSort() = 0;
void Print(ostream& out)
{
for (int i = 0; i < size; i++)
out << ' ' << data[i];
}
friend ostream& operator<<(ostream& out, Sort & v)
{
out << "original:";
v.Print(out);
out << "\nsorted:";
v.DoSort().Print(out);
return (out);
CuuDuongThanCong.com https://fb.com/tailieudientucntt
9
10
11
}
};
class BubbleSort: public Sort
{
public:
Bubble_Sort (int sz, const double *v): Sort(sz, v) {}
private:
Sort& DoSort()
{
return (*this);
}
};
void main()
{
double a[] = {1, 3, 5, 2, 4};
cout << new SelectionSort(4, A) << endl;
}
a) Những dòng lệnh nào sai? Sửa lại cho đúng.
b) Thứ tự thực hiện các lệnh.
c) Viết lại hàm DoSort của lớp BubbleSort để sắp xếp mảng theo thứ tự giảm dần.
d) Cho biết kết quả hiện trên màn hình.
Hướng dẫn:
1. Từ câu 1 đến câu 20: Kẻ bảng theo mẫu dưới đây:
Câu A B C Câu A B C
1 11
10 20
Với mỗi câu, chọn 1 câu trả lời đúng bằng cách đánh dấu √ vào ô A, B hoặc C ở dòng tương ứng.
2. Câu 21, thực hiện như đã hướng dẫn ôn tập.
CuuDuongThanCong.com https://fb.com/tailieudientucntt