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Á 3 (2009 - 2012) NGHỀ: LẬP TRÌNH MÁY TÍNH

MÔN THI: LÝ THUYẾT CHUYÊN MÔN NGHỀ Mã đề thi: DA LTMT - LT22

Nội dung

Câu I. Phần bắt buộc

1 Cơ sở dữ liệu

Điểm 7 điểm 2.5 điểm 1.5 điểm

0.5 điểm

0.5 điểm

0.5 điểm

1 điểm

A. Ngôn ngữ SQL 1. Select nhanvien.manv,nhanvien.hoten From nhanvien,phongban,chucvu Where nhanvien.mapb=phongban.mapb and nhanvien.macv=chucvu.macv and phongban.tenpb=”Kinh doanh” and chucvu.luongcaonhat Between 300 And 500; 2. Select manv,hoten,ngaysinh, nu,luong From nhanvien Where mapb In(10,30,50) Order by mapb ASC,luong DESC ; 3. Selectt Nhanvien.manv,nhanvien.hoten,nhanvien.luong*12 AS luongcanam From nhanvien,chucvu Where nhanvien.macv=chucvu.macv and chucvu.tencv=”Trưởng phòng” B. Ngôn ngữ đại số 1. T1=Nhanvien*Phongban*chucvu

(cid:0)

(cid:0)

T )1(

T

2

(

tenpb

"

Kinh

doanh

^"

luongcaonh

at

Between

300

And

500

)

(cid:0) 0.3 điểm

(cid:0)

T

3

T )2(

,

hoten

( manv (cid:0)

(cid:0)

Nhanvien

)

(

mapb

In

) ())50,30,10(

0.3 điểm

T )1(

(

manv

,

hoten

,

ngay

sinh,

nu

,

luong

)

Truong "

tencv(cid:0)

Phong

(

2. T1 = T2 = (cid:0)

0.4 điểm

,

hoten

,

luong

manv

)12*

(

3. T1=nhanvien*chucvu (cid:0) T )1(") T2 = T3 = (cid:0) T )2(

1/5

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

2.5 điểm

1. Trình bày ý tưởng và giải thuật của thuật toán sắp xếp trộn

1 điểm

(merge-sort) *) Ý tưởng:

0.5 điểm

- Ban đầu có hai dãy khóa a và b đã được sắp xếp - Trộn hai dãy a, b thành một dãy c vẫn được sắp xếp - Mỗi lần đưa một phần tử vào dãy mới ta phải so sánh 2 phần tử đầu 2 dãy khóa con, nếu thấy khóa nào nhỏ hơn ta đưa phần tử đó vào dãy khóa mới.

Thực hiện quá trình trên cho đến khi một trong hai dãy rỗng, khi

đó ta chỉ việc đưa toàn bộ số phần tử của dãy còn lại vào sau dãy

mới. *) Giải thuật:

void merge-sort (mang a, mang b, mang c , int n, int m) {

int i=0, j=0, k=0, tg; while ((i

c[k]=a[i]; i++;

} Else {

z[k]=b[j]; j++; }

0.5 điểm

k++; } If (i>=n) {

for (i=j; i

z[k]=b[i]; k++; }

} else for (j=i; j

z[k]=a[j]; k++;

}

}

2/5

2. Tạo danh sách liên kết trong đó mỗi nút là thong tin các mặt hàng, mặt hàng bao gồm: Tên hàng, đơn giá, số lượng, thành tiền (thành tiền = đơn giá * số lượng)

- Khai báo cấu trúc dữ liệu cho danh sách - Viết hàm nhập thông tin danh sách các mặt hàng từ bàn

1.5 điểm

phím

- Viết hàm duyệt và hiển thị danh sách

- Viết hàm sắp xếp lại danh sách theo thứ tự tăng dần của

thành tiền. typedef struct MH { char ten[10];

float dongia, thanhtien; int soluong; };

0.3 điểm

typedef struct tagNode { HS infor;

struct tagNode *link; }

Node; Node *head, *p, *moi; int n; void nhap( ) { HS tg ; int i ; head = NULL; for ( i=0; i

moi = (Node *) malloc (sizeof(Node)); printf ( “ Nhap thong tin cho cac mat hang:”); printf ( “ Nhap thong tin ten mat hang:”); fflush(stdin); gets

( tg.ten); fflush(stdin);

printf ( “ Nhap thong tin so luong va don gia cua mat hang:”);

0.3 điểm

scanf(“%d%f”, &tg.soluong, &tg.dongia); tg.thanhtien=tg.dongia*tg.soluong; moi -> infor =tg; if (head ==NULL) { head = moi; p=moi; p -> link =NULL; } else { p -> link = moi;

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

3/5

void duyet() {

0.3 điểm

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

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

>infor.soluong, p->infor.dongia, p->thanhtien) ;

p=p-> link ;

}

} void sapxep() {

int tg; p=head; while (p !=NULL) {

q=p->link; while (q!=NULL) {

0.3 điểm

if(q->infor.thanhtien infor.thanhtien) {

tg=q->infor.thanhtien ; q->infor.thantien =p->infor.thanhtien; p->infor =tg;

} q=q->link;

} p=p->link;

}

}

4/5

void main() {

0.3 điểm

clrscr() ; printf ( ” nhap so nut ”) ;scanf (“ %d”, &n); nhap(); duyet(); sapxep(); printf(“ danh sach cac mat hang sau sap xep la:”); duyet(); getch();

3

2 điểm

} Lập trình hướng đối tượng - Hàm Constructor là hàm dùng để khởi tạo thành phần dữ liệu

0.5 điểm

1.5 điểm

của đối tượng khi triệu gọi trong chương trình. - class pointer { private: int x,y; public: pointer(int xx,int yy) { x=xx; y=yy; } pointer() { x=0; y=0; } };

Cộng (I)

II. Phần tự chọn, do trường biên soạn 3 Điểm 1 2 …

Cộng (II) Tổng cộng (I+II)

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

5/5