CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự do – Hạnh phúc ĐÁP ÁN ĐỀ THI TỐT NGHIỆP CAO ĐẲNG NGHỀ KHOÁ 2 (2008 - 2011) NGHỀ: LẬP TRÌNH MÁY TÍNH MÔN THI: LÝ THUYẾT CHUYÊN MÔN NGHỀ Mã đề thi: DA LTMT - LT23

1/7

Điểm Câu Nội dung

I. Phần bắt buộc

2.5 điểm 1 Cơ sở dữ liệu

1.5 điểm A. Ngôn ngữ SQL

0.5 điểm 1. Select thisinh.masv,thisinh.hoten,thisinh.ngaysinh,lop.tenlop From thisinh,lop,khoa Where thisinh.malop=lop.malop and lop.makhoa=khoa.makhoa

and khoa.tenkhoa=”Công nghệ thông tin”;

2. Select thisinh.masv,thisinh.hoten,thisinh.ngaysinh,monthi.tenmonthi,ket qua.diemthi From thisinh,monthi,ketqua,lop 0.5 điểm Where thisinh.masv=ketqua.masv and monthi.mamt=ketqua.mamt

and thisinh.malop=lop.malop and lop.makhoa=”CNTT” and

year(thisinh.ngaysinh) Between 1989 And 1992;

3. Select thisinh.masv,thisinnh.hoten,monthi.tenmonthi,ketqua.diemthi

From thisinh,monthi,ketqua 0.5 điểm

Where thisinh.masv=ketqua.masv and monthi.mamt=ketqua.mamt

and ketqua.diemthi>=8;

1 điểm B. Ngôn ngữ đại số

T )1(

2

tenkhoa

Cong "

nghe

thong

tin

")

1. T1=thisinh*lop*khoa

T )2(

T

3

(

masv

,

hoten

,

ngay

sinh,

tenlop

)

T   ( 

2. T1=thisinh*monthi*ketqua*lop

2

T )1(

makhoa

CNTT "

^"

year

(

ngay

sinh)

Between

1989

And

1992

)

0.3 điểm

0.3 điểm

T

3

T )2(

(

masv

,

hoten

,

ngay

sinh,

tenmonthi

,

diemthi

)

T   ( 

3. T1=thisinh*monthi*ketqua

T2=

diemthi

T )1()8

0.4 điểm

T )2(

(

masv

,

hoten

,

tenmonthi

,

diemthi )

 ( T3=

2/7

2.5 điểm 2 Cấu trúc dữ liệu và giải thuật

1. Trình bày ý tưởng và giải thuật của thuật toán sắp xếp nổi bọt 1 điểm (bubble-sort)

*) Ý tưởng:

- Ban đầu có một dãy khóa k1,k2,k3….kn chưa được sắp

xếp

0.5 điểm

- Duyệt toàn bộ dãy khóa, tại mỗi bước quét dãy khóa từ cuối dãy, nếu gặp hai phần tử ien tiếp nghịch thế thì tiến hành đổi chỗ.

- Trong quá trình sắp xếp phần tử nhẹ hơn sẽ nổi lên trên,

phần tử nặng hơn sẽ chìm xuống dưới.

*) Giải thuật: void bubble-sort (mang a, int n) {

int i,j,m,tg; for (i=0; i

0.5 điểm

for (j=n-1; j>=i+1; j--) if (a[j]

1.5 điểm

} 2. Viết chương trình tạo một danh sách liên kết n nút trong đó mỗi nút là nhân viên gồm các thông tin: họ tên, tuổi, thâm niên. Duyệt danh sách trên và đưa ra danh sách và số lượng các nhân

viên có thâm niên >10 và tuổi < 40.

typedef struct NV { char ten[10]; int tuoi, tn;

0.3 điểm

}; typedef struct tagNode { HS infor;

struct tagNode *link;

} Node; Node *head, *p, *moi; int n;

3/7

void nhap( ) {

HS tg ; int i ; head = NULL; for ( i=0; i

moi = (Node *) malloc (sizeof(Node)); printf ( “ Nhap thong tin cho nut moi:”); printf ( “ Nhap thong tin ten cua nhan vien:”); fflush(stdin);

gets ( tg.ten); fflush(stdin);

printf ( “ Nhap thong tin tuoi va tham nien cua nhan vien

moi:”); scanf(“%d%d”, &tg.tuoi, &tg.tn);

0.3 điểm

moi -> infor =tg; if (head ==NULL) {

head = moi; p=moi; p -> link =NULL;

} else {

p -> link = moi; p= moi; p -> link =NULL;

}

}

} void duyet() {

0.3 điểm

Node *p; p=head; printf ( “ danh sach nhan vien vua nhap la:”); while ( p !=NULL) {

printf(" \n \t %s \t%d \t%d ”, p->infor.ten, p->infor.tuoi, p-

>infor.tn) ;

p=p-> link ;

}

}

4/7

void duyet2() {

Node *p; p=head; printf ( “ danh sach nhan vien co tham nien >10 va co tuoi < 40

la:”);

0.3 điểm

while ( p !=NULL) {

if ((p -> infor.tuoi >10)&&( p -> infor.tn >10))

printf(" \n \t %s \t%d \t%d ”, p->infor.ten, p->infor.tuoi,

p->infor.tn) ;

p=p-> link ;

}

} void main() {

0.3 điểm

clrscr() ; printf ( ” nhap so nut ”) ;scanf (“ %d”, &n); nhap(); duyet(); duyet2(); getch();

}

3 Lập trình hướng đối tượng 2 điểm

1 điểm

- Phương pháp khai báo xây dựng hàm bạn cho nhiều lớp: class B; /* Khai báo dẫn hướng lớp B*/ class A { private: < Khai báo các thành phần riêng lớp A>; public: … friend (< Tham số hàm>); }; class B { private: < Khai báo các thành phần riêng lớp B>; public: …

5/7

friend (< Tham số hàm>); }; /*------- xây dựng hàm bạn-------*/ () { < Thân hàm bạn>; }

6/7

1 điểm

class rectangle; class cicrle { private: int x,y; float r; public: … float getarea() { return 3.14*r*r; } friend float totalarea(rectangle o1,circle o2); }; class circle { private: int x,y; float a,b; public: … float getarea() { return a*b; } friend float totalarea(rectangle o1,circle o2); }; float totalarea(rectangle o1,circle o2) { return (o1.getarea()+o2.getarea()); }

Cộng I

7 điểm

II. Phần tự chọn, do trường biên soạn

1

Cộng II

Tổng cộng (I+II)

………, ngày ………. tháng ……. năm ……

7/7