De Thi 1
De Thi 1
ĐỀ SỐ: 01
THỜI GIAN LÀM BÀI: 90 phút
(Được sử dụng tài liệu, đề thi gồm 02 trang. Bài làm chỉ được chấm khi nộp cùng đề thi)
Họ và tên SV: MSSV:
Phần 1: Lý thuyết (7 điểm)
float x = n/3.;
1. Cho file mã nguồn sau. Chương trình sau 7. Đoạn chương trình sau in ra gì? (a là số
khi dịch được đặt tên “main.exe”. Chương cuối của MSSV)
trình được chạy dòng lệnh: “main.exe enum cmd{dong = a, mo};
Nguyen Van A”. Hỏi chương trình in ra enum cmd action = dong;
màn hình nội dung gì? printf("%d", action);
#include <stdio.h> 8. Khai báo cấu trúc point để biểu diễn điểm
int main(int argc, char argv[]) { trong mặt phẳng 2D với thuộc tính là tọa
int c = argc; độ x, y.
print("%d %s", c, argv[1]); 9. Đoạn chương trình sau in ra gì? Biết a là
return 0; số cuối của MSSV.
} int m[]= {a, a+1, a+2, a+3, a+4};
2. Đoạn chương trình sau in ra gì? Biết a là printf("%d", m[1]);
số cuối của MSSV. 10. Đoạn chương trình sau in ra gì?
switch ((a+1)%3) { int m[]={1,2,3,4,5};
case 0: printf("0 "); printf("%d",
case 1: printf("1 "); sizeof(m)/sizeof(m[0]));
case 2: printf("2 "); 11. Trong ANSI đoạn chương trình sau có dịch
default: printf("default "); được không? Tại sao?
} #include <stdio.h>
3. Đoạn chương trình sau có đúng không? void main() {
Sửa lại nếu cần. int x;
float x; scanf("%d",&x);
printf("Nhap canh hinh vuong:"); }
scanf("%f", &x); 12. Đoạn chương trình sau in ra gì? Biết a là
4. Sau đoạn chương trình sau, biến x có giá số cuối của MSSV.
trị là bao nhiêu? (a là số cuối của mã số int x;
sinh viên, ví dụ: MSSV là 20132006, a là for (x=a; x<a+10; x++) {
6). if (x == a+2) break;
int n = a+1; printf("%d ", x);
float x = n/3; }
5. Sau đoạn chương trình sau,biến c bằng bao 13. Đoạn chương trình sau in ra gì? Biết a là
nhiêu? Biết a là số cuối của MSSV. số cuối của MSSV.
char c = (0xF1 << 1) | a; short *p1, *p2, m[30];
6. Sau đoạn chương trình sau, biến x có giá p1=m+5; p2=m+a;
trị là bao nhiêu? (a là số cuối của mã số printf("%d", p1-p2);
sinh viên, ví dụ: MSSV là 20132006, a là 14. Đoạn chương trình sau in ra gì? Biết a là
6). số cuối của MSSV.
int n = a+1; int x = a;
1
void fff(int x, int y = 5) { 20. Sau đoạn chương trình sau,biến c bằng bao
printf("%d", (x + y)); nhiêu? Biết a là số cuối của MSSV.
} char c = 0x0A & a;
fff(4,2);
15. Trong C++, đoạn chương trình sau có dịch 21. Viết khai báo và cài đặt lớp số phức có
được không? (thừa bị trừ điểm): (1 điểm)
class BanTin{ - 2 thuộc tính x, y dạng float phạm vi
static count; private
char header[2], data[8]; - 1 phương thức khởi tạo có tham số
int checksum; - 1 phương thức trả về liên hợp của số
}; phức
/*...*/ - 1 phương thức setX cài đặt thuộc tính x
Bantin::count++ 22. Đoạn chương trình sau có dịch được
16. Sử dụng con trỏ như sau có đúng không? không?
float* fff(float b, float c) { class A {
float *kq=malloc(sizeof(float)); protected:
*kq = b+c; int n;
return kq; int getData() {return n;}
} public:
17. Đoạn chương trình sau in ra gì? a là số A() {n=0;}
cuối MSSV. }
char* s = (char*)malloc(10+a); class B:public A{
printf("%d", sizeof(s)); public:
18. Đoạn chương trình sau in ra gì? a là B() {}
MSSV. }
#define prod(x,y) x*y int main() {
printf("%d", prod(1+a, 2+a)); B b;
19. Viết khai báo hàm trả về giá trị lớn nhất b.getData();
của 2 tham số đầu vào. }
2. Viết chương trình C++ thực hiện các công việc sau (1.5 điểm):
a. Tạo lớp hình chữ nhật (cHCN) với thuộc tính chiều dài, chiều rộng dạng thực float
có sử dụng các khái niệm: biến private, hàm khởi tạo mặc định (dài = rộng = 0),
hàm khởi tạo có tham số, hàm tính diện tích) (0.5 điểm).
b. Sử dụng lớp ở câu a, viết một chương trình (1 điểm):
i. Tạo đối tượng c1 thuộc lớp cHCN với chiều dài = 10*(a+1), chiều rộng =
a+1, a là số cuối của MSSV. (0.25điểm)
2
ii. Tạo đối tượng c2 thuộc lớp cHCN với chiều dài = 100, chiều rộng = a+1, a
là số cuối của MSSV. (0.25điểm)
iii. Tính tổng diện tích của c1 và c2. (0.25 điểm)
iv. Hiển thị tổng tính được ra màn hình (0.25 điểm).