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Á II (2008 - 2011) NGHỀ: LẬP TRÌNH MÁY TÍNH MÔN THI: LÝ THUYẾT CHUYÊN MÔN NGHỀ Mã đề số: DA LTMT - LT07

Câu Nội dung Điểm

I. Phần bắt buộc 7 điểm

Câu 1 1,5 điểm

1 0,75 điểm

Trình bày giải thuật sắp xếp kiểu nổi bọt để sắp xếp một dãy khóa theo thứ tự giảm dần. procedure sxdoicho(a,n) 1. for i:=1 to n-1 do 0,25 điểm

begin

0,5 điểm for j:= n downto i+1 do

begin

if(a[j]

X:=a[j];

a[j]:=a[j-1];

a[j]:=X;

end; end;

end;

2. return;

2

Hãy đưa ra một dãy khoá gồm 10 phần tử bất kỳ, sau đó đưa

0,75 điểm

ra kết quả thực hiện 3 bước đầu tiên để sắp xếp dãy khoá đó

theo thứ tự giảm dần bằng giải thuật sắp xếp kiểu nổi bọt.

Cho một dãy khoá gồm 10 phần tử, chẳng hạn: 84 53 17 76 11 98 19 77 69 95. Bước 1: 98 84 53 17 76 11 95 19 77 69

0,25 điểm

Trang:1/ 6

Bước 2: 98 95 84 53 17 76 11 77 19 69 0,25 điểm

Bước 3: 98 95 84 77 53 17 76 11 69 19 0,25 điểm

Câu 2 3,5 điểm

a 0,5 điểm

0,25 điểm 0,25 điểm

void nhapsv() { cout<<"so bao danh";cin>>sobaodanh; cout<<"ho ten";gets(hoten); cout<<"ngay sinh";

<<" "<

cout<<"lop:";gets(lop); } void hienthisv() { cout<

b

0,5 điểm

Xây dựng lớp sinh viên bao gồm các thuộc tính số báo danh, họ tên, ngày sinh, lớp và định nghĩa hàm thành phần: hàm cho phép nhập thông tin cho một sinh viên, hàm hiển thị thông tin của một sinh viên #include #include #include #include typedef struct date {int ngay,thang,nam;}; class SINHVIEN { char sobaodanh[10]; char hoten[30]; date ngaysinh; char lop[10]; public: cin>>ngaysinh.ngay>>ngaysinh.thang>>ngaysinh.nam; }; Xây dựng lớp điểm thi thừa kế từ lớp sinh viên lưu các kết

quả môn thi tin đại cương, toán cao cấp, tiếng anh và định

nghĩa các hàm thành phần: hàm cho phép nhập thông tin

điểm thi cho một sinh viên, hàm hiển thị thông tin điểm thi

của một sinh viên ( với các thông tin điểm tin đại cương, toán

Trang:2/ 6

cao cấp, tiếng anh).

void nhapdiem() { cout<<"tin dai cuong:";cin>>tindc; cout<<"toan cao cap:";cin>>toan; cout<<"tieng anh:";cin>>tienganh; } void hienthidiem() { cout<<" "<

c 1 điểm

ch="Gioi";

ch="Kha";

ch="Kha";

class DIEMTHI:public SINHVIEN {protected: float tindc; float toan; float tienganh; public: }; Xây dựng lớp kết quả thừa kế lớp điểm thi lưu tổng số điểm đạt được của sinh viên, và định nghĩa hàm thành phần: hàm cho phép xếp loại học lực của sinh viên dựa vào tổng điểm với tổng điểm ≥ 24 thì xếp loại giỏi, 21 ≤ tổng điểm < 24 thì xếp loại khá, 15 ≤ tổng điểm < 21 thì xếp loại trung bình, còn tổng điểm <15 thì xếp loại yếu, hàm hiển thị kết quả thi của sinh viên (với các thông tin số báo danh, họ tên, ngày sinh, lớp, điểm tin đại cương, toán cao cấp, tiếng anh, xếp loại). class KETQUA:public DIEMTHI { public: float tongdiem() { return (tindc+toan+tienganh); } char* xeploai() { char *ch; if(tongdiem()>24) else if((tongdiem()>=21)&&(tongdiem()<24)) else if((tongdiem()>=21)&&(tongdiem()<24)) else 0,25 điểm 0,5 điểm

Trang:3/ 6

ch="Trung binh";

ch="Yeu";

0,25 điểm

if((tongdiem()>=15)&&(tongdiem()<21)) else return ch; } void hienthikq() { hienthisv(); hienthidiem(); cout<<" "<

1,5 điểm d

}; Viết hàm main thực hiện: - Nhập danh sách kết quả cho n sinh viên.

- Sắp xếp danh sách sinh viên giảm dần theo tổng điểm bằng

phương pháp sắp xếp nổi bọt và hiển thị kết quả sắp xếp.

- Hiển thị ra màn hình danh sách sinh viên xếp loại yếu.

Nhập danh sách kết quả cho n sinh viên 0,25điểm

0,75điểm

void main() { clrscr(); KETQUA *dssv,tam; int n,i,j; cout<<"\nNhap vao so sinh vien:"; cin>>n; dssv=new KETQUA[n]; for (i = 1; i <=n; i++) { cout <<"\nNhap thong tin cho sinh vien thu: " <=i;j--) if(dssv[j-1].tongdiem()

{ tam=dssv[j-1]; dssv[j-1]=dssv[j]; dssv[j]=tam; }

0,5 điểm

Trang:4/ 6

0,25 điểm

dssv[i].hienthikq(); cout<

cout <<"\nDanh sach ket qua sau khi da sap xep la:"<

dssv[i].hienthikq();

{ if(strcmp(dssv[i].xeploai(),"Yeu")==0) cout<

cout <<"\nDanh sach sinh vien xep loai yeu la:"<

Câu 3 2 điểm

a

0,25điểm

FROM Monhoc WHERE sotinchi IN (SELECT max(sotinchi) FROM Monhoc WHERE tinhchat=1)

b

FROM Sinhvien INNER JOIN Diem ON 0,5 điểm

ORDER BY Sinhvien.Lop, Diem.Diemthi;

FROM Sinhvien INNER JOIN Diem ON

GROUP BY sinhvien.Lop ORDER BY Diem.Diemthi)

c

FROM Sinhvien INNER JOIN Diem ON

0,5 điểm

WHERE Diem.Diemthi IN (

SELECT Max(Diem.Diemthi) FROM Diem WHERE Diem.mamh= ‘CSDL’) and

SELECT sotinchi, tenmh and(tinhchat=1); SELECT Mssv, Hoten, Lop, Diemthi Sinhvien.Mssv = Diem.Mssv (hoặc SELECT Mssv, Hoten, Lop, Diemthi Sinhvien.Mssv = Diem.Mssv SELECT Hoten, Lop, Diemthi Sinhvien.Mssv = Diem.Mssv (Diem.mamh= ‘CSDL’) SELECT Hoten, Diemthi

d

0,25 điểm

Trang:5/ 6

FROM Sinhvien INNER JOIN Diem ON

WHERE Mssv=9900277;

e

0,5 điểm

FROM Sinhvien INNER JOIN Diem ON

GROUP BY Diem.mssv, Sinhvien.malop,

Sinhvien.Mssv = Diem.Mssv SELECT Diem.mssv, hoten, malop, AVG(diemthi) AS diemtrungbinh Sinhvien.mssv=Diem.mssv Sinhvien.hoten HAVING AVG(diemthi)<5 ORDER BY Diem.mssv

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

Tổng cộng (I + II)

1 2

……….., Ngày…………Tháng………..Năm…………..

Trang:6/ 6