Đề thi môn Kỹ thuật lập trình
Sinh viên: ………………………………
MSSV:……….........................................
ề thi môn K Thu t L p Trình, niên khóa 2013-2014
Thời gian : 100 phút
Tài liệu mở
Thang điểm tối đ là 10
PHẦN I: TRẮC NGHIỆM (4 điểm, sinh viên chỉ cần trả lờ đú g 6 câ )
Sinh viên trả lời các câu hỏi bằng cách khoanh tròn đáp án Ú ẤT
Câu 1. Giả sử ta khai báo: int m[] = {5, 4, 3, 2, 1}, i = 4;
Hãy cho biết câu lệnh nào dưới đây KHÔNG hợp lệ khi truy xuất phần tử của mảng m:
A. int z= m[--i]; B.int z = m[2*2];
C. int z = m[m[0]];
D. int z = m[m[i]];
Câu 2. Câu lệnh khai báo nào dưới đây KHÔNG hợp lệ:
A. int x[][3]= {{0}, {1}, {1, 2, 3}};
B. int x[4][3] = {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}, {1, 2, 3}};
C. int x[4][] = {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}, {1, 2, 3}};
D. int x[][3] = {1, 2, 3, 4};
Câu 3. Khai báo mảng b như sau: int b[][3] = {{1},{2, 3}, {4, 5, 6}, {2}};
Giá trị của b[2][2]bằng
A. 0
B. 3
C. 6
D. 2
Câu 4. Cho biết khai báo nào dưới đây không hợp lệ
A.int a[] = {1, 2}; B. char *b[3]; C. char s[10] = "test";
D. int n = 2, a[n]={1,2,3};
Câu 5. Nhận định nào dưới đây đúng:
A. Chương trình C++ luôn bắt đầu thực thi từ hàm đầu tiên
B. Tất cả lời gọi hàm đều nằm trong hàm main.
C. Chương trình C++ luôn bắt đầu thực thi từ hàm main
D. Trong chương trình C++, hàm main luôn phải đặt trước tất cả các hàm khác
Câu 6. Giả sử ta có lời gọi hàm sau: fun(a + b, 3, max(n – 1, b));
Số lượng tham số thực của hàm fun là.
A. 3
B. 4
C. 5
D. 6
Câu 7. Cho biết kết xuất ra màn hình của đoạn chương trình sau:
1: #include <iostream.h>
2: void func1(int); void func2(int);
3: char st[] = "C++ Programing";
4: void func1(int i) { cout << st[i]; if(i<4) {i+=1; func2(i);} }
5: void func2(int i){ cout << st[i]; if(i<4) {i+=2; func1(i);}}
6: void main(){ func1(0); cout<<endl; }
A. C++ Programing
B. C+Pr
C. Program
D. C+ P
– niên khóa 2013-2014
Trang 1/8
Sinh viên: ………………………………
MSSV:……….........................................
Câu 8. Giả sử ta khai báo “int *p, str[10];”, cho biết câu lệnh nào dưới đây đúng cú pháp
A. p = &str;
B. p = str; C. str++;
D. str = p;
Câu 9. Khai báo p và q là hai con trỏ: int *p, *q;
Trong số những câu lệnh dưới đây:
i.
p = 0;
ii.
p = p + q;
iii. p = p + (10-3);
iv.
if(p == q) cout << “=”; else if(p != q) cout << “!”;
A. Có đúng 1 câu lệnh hợp lệ
B. Có đúng 2 câu lệnh hợp lệ
C. Có đúng 3 câu lệnh hợp lệ
D. Cả 4 câu lệnh đều hợp lệ
Câu 10. Trong số những khai báo sau đây:
i.
ii.
struct a, b, c {int x; double y;} z;
struct z {int x; double y;} a, b, c;
iii. struct a, b, c {int x; double y;};
iv.
v.
struct z {int x; double y;}; z a, b, c;
struct {int x; double y;} a, b, c;
Có bao nhiêu khai báo hợp lệ ?
A. 1
B. 2
C. 3
D. 4
Câu 11. Từ khóa nào dưới đây KHÔNG được sử dụng khi khai báo biến:
A. auto B. static C. external D. register
Câu 12. Cho lớp MyClass được định nghĩa như sau:
class MyClass{ public: MyClass() {cout << 'A';}
MyClass(char C) {cout << C;}
~MyClass() {cout << 'B';}};
Hãy cho biết kết xuất ra màn hình của đoạn chương trình sau:
1: void main() {
2:
3:
4:
MyClass p1, *p2;
p2 = new MyClass('X');
delete p2;
}
A. ABX
B. ABXB
C. AXBB
D. ACBB
Câu 13. Cho lớp MyClass được định nghĩa như sau:
class MyClass{ public: MyClass() {cout << 1;}};
Câu lệnh khai báo sau xuất gì ra màn hình
MyClass a, b[2], *p[2];
A. 1
B. 111
C. 11111
D. Không xuất gì ra màn hình
Câu 14. Chọn lựa đáp án đúng nhất về hàm tạo (constructor) trên C++:
A. Hàm tạo tự động được gọi khi một đối tượng mới của lớp được tạo ra
– niên khóa 2013-2014
Trang 2/8
Sinh viên: ………………………………
MSSV:……….........................................
B. Khi khai báo, mỗi lớp bắt buộc phải có một hàm tạo
C. Hàm tạo chỉ được gọi khi đối tượng được tạo ra bởi lệnh new
D. Nếu nhiều hàm tạp được định nghĩa trong một lớp, thì khi một đối tượng được tạo ra, chương trình sẽ
lần lượt gọi các hàm tạo theo một thứ tự ưu tiên
Câu 15. Giả sử trong chương trình có các khai báo hàm với các prototype như sau:
(1) void calcul(int a, float b, int c=0);
(2) void calcul(double a, int b, int c=0);
(3) void calcul(float a, float b);
Việc gọi hàm thông qua câu lệnh “calcul(1.0,1);” sẽ thực hiện hàm nào?
A. (1)
B. (2)
C. (3)
D. Chương trình báo lỗi vì khai báo quá nhiều hàm trùng tên
Câu 16. Định nghĩa hàm nào dưới đây hợp lệ
A. int func(void){return 0.0;}
B. int func(void a){return 0;}
C. int func(int a, int b, float c=3.0) {return 0;}
D. int func(int a*b, float c) {return 0;}
Câu 17. Hãy chọn khai báo HỢP LỆ trên C++ cho dãy arr gồm 4 phần tử có kiểu là char và được khởi
tạo các giá trị lần lượt là a, b, c, và d?
A. char arr[] = {"a", "b", "c", "d"};
B. char arr[] = {'a', 'b', 'c', 'd'};
C. char arr[] = "abcd";
D. char arr[] = 'abcd';
PHẦ : ỀN CHỖ TRỐNG (3 điểm, sinh viên chỉ cần trả lờ đú g 2 câu)
Câu 18. Hãy cho biết kết xuất ra màn hình của đoạn chương trình sau:______________________
1: #include <iostream.h>
2: int
3: int
4:
d = 1;
func(int p){
static int d = 15;
d += p;
5:
cout << d << ";"; return d;
}
6: void main(){
7:
8:
int
a = 4;
cout << func(a + func(d)) << endl;
}
Câu 19. Giả sử ta có khai báo như sau:
struct Foo1 {char str[32];
float
a;} x;
union Foo2 { char str[32];
float
a;} y;
Cho biết câu lệnh: cout << sizeof(x) << sizeof(y); xuất gì ra màn hình:__________________
– niên khóa 2013-2014
Trang 3/8
Sinh viên: ………………………………
MSSV:……….........................................
Câu 20. Hãy cho biết kết quả xuất ra màn hình của đoạn chương trình sau:__________________
1:
#include <iostream.h>
int foo(int n) { if(n == 0) return 0;
return n*foo(n-1); }
void main() { cout << foo(6) << endl; }
2:
3:
4:
Câu 21. Đoạn chương trình sau xuất gì ra màn hình :_____________________________________
int s = 0, t[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
for(int i = 0; i<9; i+=2)
cout << s << endl;
s += *(t + i);
Câu 22. Hãy cho biết kết xuất của đoạn chương trình sau:_________________________________
1:
#include <iostream.h>
2:
3:
4:
5:
6:
7:
8:
9:
void swap1(int c0[], int c1[]){int t;
t = c0[0]; c0[0]=c1[0]; c1[0]=t; }
void swap2(int* c0, int* c1){ int t;
t = *c0; *c0 = *c1; *c1 = t; }
void main(){
int a[2] = {3, 5}, b[2] = {3, 5};
swap1(a, a+1);swap2(&b[0], &b[1]);
cout << a[0] << ";" << a[1] << ";" << b[0] << ";" << b[1]; }
Câu 23. Cho biết kết quả xuất ra màn hình của đoạn chương trình sau:______________________
char st[20] = "HELLO Viet Nam\0\t\\";
cout << strlen(st) << " " << st << endl;
Câu 24. Định nghĩa hàm func như sau:
void func(int a, int& b) {a++; b++;}
Hãy cho biết sau khi thực hiện đoạn mã sau, giá trị của x, y lần lượt bằng bao nhiêu: __________
int x = 0, y = 1;
func(x, y);
Câu 25. Định nghĩa hàm fun như sau:
void fun(int *a, int *b){
int w; *a = *a + *a; w = *a; *a = *b; *b = w;
}
Hãy cho biết kết xuất của đoạn chương trình sau:______________________________________
int x = 2.0, y = 5.0;
int *px = &x, *py = &y;
fun(px, py);
cout << x << ", " << y << endl;
Câu 26. Hãy cho biết kết xuất của đoạn chương trình sau:_________________________________
void main() {
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, *p;
p = a;
cout << *p+9 << endl; }
Câu 27. Hãy chỉ ra các dòng bị lỗi trong đoạn chương trình sau:___________________________
1:
class watch {
void watch() {
2:
3:
4:
hour = 0;
minute = 1; }
– niên khóa 2013-2014
Trang 4/8
Sinh viên: ………………………………
MSSV:……….........................................
5:
6:
7:
private:
int hour = 12;
int minute; };
Câu 28. Cho biết kết xuất của đoạn chương trình sau: __________________________________
1:
#include <iostream.h>
class A{public: A() {cout<<"A";}
~A(){cout << "a";}};
class B{A a;
public: B() {cout<<"B";}
~B(){cout << "b";}};
void main() { B b;}
2:
3:
4:
5:
6:
7:
Câu 29. Biết rằng chương trình sau xuất 23 ra màn hình, hãy điền vào chỗ trống
1:
#include <iostream.h>
class MyClass{public: void Print() const {cout << 23;}};
void main() {
MyClass* p = new MyClass();
___________Print();
}
2:
3:
4:
5:
6:
Câu 30. Khi cho thực thi đoạn chương trình sau:
1:
2:
3:
#include <iostream>
using namespace std;
class Father{
4:
5:
public: Father(){cout << "Cha ";}
};
6:
class Child: public Father{
7:
8:
public: Child(){ cout << "Con ";}
};
9:
10:
11:
void main(){
Child c;
}
Kết quả in ra màn hình là: _____________________________________
PHẦN III: LẬP TRÌNH (3 điểm)
Câu 31. Viết hàm đệ quy int sumOddDigit(int n) thực hiện chức năng sau:
o Trả về -1 nếu n < 0.
o Trả về tổng của các chữ số lẻ của số n nếu n >= 0.
Ví dụ: nếu n = 1468952 thì kết quả là : 1 + 9 + 5 = 15.
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
– niên khóa 2013-2014
Trang 5/8
Sinh viên: ………………………………
MSSV:……….........................................
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
Câu 32. Viết hàm void In(int a[], int n) với n>0 là số phần tử của mảng a, hàm này in ra các phần tử
a[i] (0 ≤ i < n) nếu tồn tại phần tử a[j] sao cho a[i] là bội của a[j].
Ví dụ: nếu mảng a=[9,2,3,4,5,6] với n=6 thì các phần tử được in ra là a[0], a[3] và a[5] bởi vì
a[0] là bội của a[2], a[3] là bội của a[1] và a[5] là bội của a[1] và a[2].
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
Câu 33. Danh sách sinh viên là một mảng một chiều, dùng để lưu trữ thông tin của 300 sinh viên.
Thông tin của sinh viên bao gồm: MSSV (kiểu int), họ tên (kiểu string), danh sách môn học.
Và mỗi môn học bao gồm: Mã môn học (kiểu int), Tên môn học (kiểu string), điểm giữa kỳ
(kiểu float), điểm cuối kỳ (kiểu float).
Yêu cầu:
a)
Viết phần khai báo cấu trúc và biến dùng để lưu trữ thông tin của các sinh viên này
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
– niên khóa 2013-2014
Trang 6/8
Sinh viên: ………………………………
MSSV:……….........................................
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
b)
Viết hàm cho phép người dùng nhập thông tin về các sinh viên và thông tin của các môn Toán
Rời Rạc 1, Thiết kế hệ thống số và Kỹ Thuật Lập Trình.
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
c)
Viết chương trình in ra danh sách sinh viên có điểm trung bình trên 7.0 cho cả ba môn trình
bày trong câu b. Biết rằng điểm trung bình = 0.4 x điểm giữa kỳ + 0.6 x điểm cuối kỳ.
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
– niên khóa 2013-2014
Trang 7/8
Sinh viên: ………………………………
MSSV:……….........................................
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
Họ và tên sinh viên: …………………………………. Điểm
MSSV:………………………………………………..
Chủ nhiệm bộ môn
Chữ ký:
Giảng viên ra đề
Chữ ký:
Họ tên:
Họ tên:
– niên khóa 2013-2014
Trang 8/8
Bạn đang xem tài liệu "Đề thi môn Kỹ thuật lập trình", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
- de_thi_mon_ky_thuat_lap_trinh.pdf