CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
ĐÁP ÁN
ĐỀTHITỐTNGHIỆP CAO ĐẲNG NGHỀ KHOÁ II (2008 - 2011)
NGHỀ: LẬPTRÌNHMÁY TÍNH
MÔN THI: LÝ THUYẾT CHUYÊN MÔN NGHỀ
Mã đề số: DA LTMT- LT06
Câu 1: (1,5 điểm)
TT Nội dung Điểm
I. Phần bắt buộc 7 điểm
Câu 1 1,5 điểm
1 Trình bày giải thuật sắp xếp kiểu lựa chọn để sắp xếp một dãy
khóa theo thứ tự giảm dần.
0,75 điểm
procedure sxluachon(a,n)
1. for i:=1 to n-1 do
begin
0,25 điểm
m:=i;
for j:= i+1 to n do
begin
if(a[j]<a[m]) then m:=j;
if(m <> i) then
begin
X:=a[i];
a[i]:=a[m];
a[m]:=X;
end;
end;
end;
2. return;
0,5 điểm
2 Hãy đưa ra một dãy khoá gồm 10 phần tử bất kỳ, sau đó đưa 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 lựa chọn.
0,75 điểm
Chẳng hạn với dãy khoá: 36 18 19 52 53 72 39 61 70 90.
Bước 1: 90 18 19 52 53 72 39 61 70 36 0,25 điểm
Trang:1/ 6
Bước 2: 90 72 19 52 53 18 39 61 70 36 0,25 điểm
Bước 3: 90 72 70 52 53 18 39 61 19 36 0,25 điểm
Câu 2 3,5 điểm
a Xây dựng lớp người bao gồm các thuộc tính họ tên, ngày sinh và
định nghĩa hàm thành phần: hàm cho phép nhập thông tin cho
một người, hàm hiển thị thông tin của một người.
0,5 điểm
#include <iostream.h>
#include <conio.h>
#include<string.h>
#include<stdio.h>
typedef struct date
{int ngay,thang,nam;};
class NGUOI
{ char hoten[30];
date ngaysinh;
public:
void nhap()
{
cout<<"ho ten:";gets(hoten);
cout<<"ngay sinh:";
cin>>ngaysinh.ngay>>ngaysinh.thang>>ngaysinh.nam;
}
void hienthi()
{
cout <<" "<<hoten<< " "<<ngaysinh.ngay<<"/"
<<ngaysinh.thang<<"/"<<ngaysinh.nam;
}
};
0,25 điểm
0,25 điểm
b Xây dựng lớp sinh viên thừa kế từ lớp người có thêm thuộc tính
lớp, điểm trung bình và định nghĩa các 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 ( với các thông tin họ tên, ngày sinh, lớp, điểm trung
bình), hàm kiểm tra xem sinh viên đó có được khen thưởng không.
0,5 điểm
class SINHVIEN:public NGUOI
{
char lop[30];
public:
float diemtb;
void nhapsv()
{
cout<<"lop:";gets(lop);
cout<<"diem trung binh:";
0,25 điểm
Trang:2/ 6
cin>>diemtb;
}
void hienthisv()
{
hienthi();
cout<<" "<<lop<<" "<<diemtb;
}
int kiemtrakhenthuongsv()
{ if(diemtb>8)
return 1;
else return 0;
}
};
0,25 điểm
c Xây dựng lớp giáo viên thừa kế từ lớp người có thêm các thuộc
tính khoa, bộ môn, số bài báo và định nghĩa các hàm thành phần:
hàm cho phép nhập thông tin cho một giáo viên, hàm hiển thị
thông tin của một giáo viên (với các thông tin họ tên, ngày sinh,
khoa, bộ môn, số bài báo), hàm kiểm tra xem giáo viên đó có được
khen thưởng không.
0,5 điểm
class GIAOVIEN:public NGUOI
{
char khoa[30];
int sobaibao;
public:
char bomon[30];
void nhapgv()
{
cout<<"khoa:";gets(khoa);
cout<<"bo mon:";gets(bomon);
cout<<"so bai bao";
cin>>sobaibao;
}
void hienthigv()
{
hienthi();
cout<<" "<<khoa<<" "<<bomon<<" "<<sobaibao;
}
int kiemtrakhenthuonggv()
{ if(sobaibao>=1)
return 1;
else return 0;
}
};
0,25 điểm
0,25 điểm
d Viết hàm main thực hiện: 2 điểm
Trang:3/ 6
- Nhập danh sách không quá 100 sinh viên và không quá 30 giáo
viên.
- Sắp xếp danh sách sinh viên giảm dần theo điểm trung bình
bằng phương pháp sắp xếp chèn trực tiếp 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 được khen thưởng.
- Hiển thị ra màn hình danh sách giáo viên thuộc bộ môn “Mang
may tinh” được khen thưởng.
Nhập danh sách không quá 100 sinh viên và không quá 30 giáo viên. 0,5 điểm
void main()
{ clrscr();
SINHVIEN dssv[100],tam;
GIAOVIEN dsgv[30];
int n,m,i,j;
cout<<"\nNhap vao so sinh vien:";
cin>>n;
for (i = 1; i <=n; i++)
{ cout <<"\nNhap thong tin cho sinh vien thu: " <<i<<endl;
dssv[i].nhap();
dssv[i].nhapsv();
}
cout<<"\nNhap vao so giao vien:";
cin>>m;
for (i = 1; i <=m; i++)
{ cout <<"\nNhap thong tin cho giao vien thu: " <<i<<endl;
dsgv[i].nhap();
dsgv[i].nhapgv();
}
0,25 điểm
0,25 điểm
Sắp xếp danh sách sinh viên giảm dần theo điểm trung bình bằng
phương pháp sắp xếp chèn trực tiếp và hiển thị kết quả sắp xếp.
0,75 điểm
for (i = 2; i <=n; i++)
{
tam=dssv[i];
j=i-1;
while((dssv[j].diemtb<tam.diemtb)&&(j>=1))
{
dssv[j+1]=dssv[j];
j ;
}
dssv[j+1]=tam;
}
cout <<"\nDanh sach sinh vien sau khi da sap xep la:"<<endl;
0,5 điểm
0,25 điểm
Trang:4/ 6
for(i=1;i<=n;i++)
{
dssv[i].hienthisv();
cout<<endl;
}
Hiển thị ra màn hình danh sách sinh viên được khen thưởng. 0,25 điểm
cout<<"\nDanh sach cac sinh vien duoc khen thuong la:" <<endl;
for (i = 1; i <=n; i++)
{
if(dssv[i].kiemtrakhenthuongsv()==1)
dssv[i].hienthisv();
}
Hiển thị ra màn hình danh sách giáo viên thuộc bộ môn “Mang may
tinh” được khen thưởng.
0,5 điểm
cout<<"\nDanh sach cac giao vien bo mon mang maytinh duoc khen
thuong la:" <<endl;
for (i = 1; i <=m; i++)
{
if((dsgv[i].kiemtrakhenthuonggv()==1)&&
(strcmp(dsgv[i].bomon,"Mang may tinh")==0))
dsgv[i].hienthigv();
}
getch();
}
Câu 3 2 điểm
a Hãy chứng minh phụ thuộc hàm AB→GH được suy dẫn từ F nhờ các
qui tắc suy dẫn của Armstrong
- AB → E và E→G (giả thuyết) ⇒ AB → G (1)
- AB → E ⇒ AB → BE (luật tăng) (2)
- BE→I (giả thuyết) (3)
- (2) và (3) ⇒ AB → I (4)
- (1) và (4) ⇒ AB → IG (luật hợp)
- GI→H (giả thuyết) nên GI → GH (luật tăng)
- AB → IG và GI → GH nên AB→GH
0,5 điểm
b Tìm bao đóng của {AB}
{AB}
+
= {ABE} vì AB→E
= {ABEG} vì E→G
= {ABEGI} vì BE→I
= {ABEGIH} vì GI→H
Vậy {AB}
+
= {ABEGIH}
0,75 điểm
Trang:5/ 6
c Xác định 1 khóa của p
Ta thấy B là thuộc tính chỉ xuất hiện ở vế trái.
Ta tính B
+
= B ≠ U (B không phải là khóa của p)
(AB)
+
= ABCDE (đã tính ở câu a). Nên AB là một khóa của p
0,75 điểm
II. Phần tự chọn, do trường biên soạn 3 điểm
1
2
Tổng cộng (I + II)
……… , Ngày…………Tháng……… Năm…………
Trang:6/ 6
. 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. Điểm
I. Phần bắt buộc 7 điểm
Câu 1 1,5 điểm
1 Trình bày giải thuật sắp xếp kiểu lựa chọn để sắp xếp một dãy
khóa theo thứ tự giảm dần.
0,75 điểm
procedure