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Ề KHỐ 2 (2008 - 2011)
NGHỀ: LẬP TRÌNH MÁY TÍNH
MƠN THI: LÝ THUYẾT CHUN MƠN NGHỀ
Mã đề số: DA LTMT - LT11
Câu
Nội dung
I. Phần bắt buộc
1
a. Trình bày được giải thuật Selection Sort.
Điểm
- Bước 0: chọn phần tử có giá trị nhỏ nhất trong n phần tử từ
a[0] đến a[n-1] và hốn vị nó với phần tử a[0].
- Bước 1: chọn phần tử có giá trị nhỏ nhất trong n-1 phần tử từ
a[1] đến a[n-1] và hốn vị nó với a[1].
- Tổng quát ở bước thứ i: chọn phần tử có giá trị nhỏ nhất
trong n-i phần tử từ a[i] đến a[n-1] và hốn vị nó với a[i].
- Sau n-1 bước (từ bước 0 đến n-2) thì mảng đã được sắp xếp.
0,25
0.25
0,25
0,25
b. Áp dụng giải thuật Selection Sort với bộ dữ liệu
K = {9, 3, 10, 0, 99, 35, 25, 88, 18}
Khóa
Bước
Ban
đầu
Bước 1
Bước 2
Bước 3
Bước 4
Bước 5
Bước 6
Bước 7
Bước 8
Kết quả
2
K[1] K[2] K[3] K[4] K[5] K[6] K[7] K[8] K[9]
9
3
10
0
99
35
25
88
18
0
3
3
10
10
9
9
9
10
10
99
99
99
99
18
35
35
35
35
35
25
25
25
25
25
25
35
35
0
3
9
10
18
25
35
88
88
88
88
88
88
88
88
88
18
18
18
18
99
99
99
99
99
a. Định nghĩa khóa của lược đồ quan hệ
Trang: 1/4
0,75
0,25
Cho lược đồ quan hệ R với các tập thuộc tính U={A1,A2, ...,
An} và các phụ thuộc hàm F, X U. Ta nói X là một khóa của
R nếu:
- X U F+ . Nghĩa là X xác định hàm tất cả các thuộc tính
(các phụ thuộc hàm này thuộc F hoặc được suy diễn logic từ
F).
- Không có Y X mà Y U F+ .
b. Thuật tốn tìm một khóa của lược đồ quan hệ
Vào: lược đồ quan hệ R với tập thuộc tính U và tập phụ thuộc
hàm F
Ra: Tập K là khóa của R
Thuật tốn:
- Đặt K=U
- Lặp lại q trình loại bỏ khỏi K thuộc tính A mà
{K-A}+ =U.
0,25
0,25
0,25
0,25
c. Áp dụng
Bước 1: Gán K = R = {A,B,C,D,E,G,H,I}
0,25
Bước 2: Lần lượt loại bớt các thuộc tính của K
0,50
+
- Loại phần tử A: ta có {B,C,D,E,G,H,I} = R
vì pth CG → AE khiến A thuộc về {B,C,D,E,G,H,I}+
nên K = {B,C,D,E,G,H,I}.
- Loại phần tử B, ta có {C,D,E,G,H,I}+ = R
vì pth CG → AE khiến A thuộc về {C,D,E,G,H,I}+ và
pth AC → B nên K ={C,D,E,G,H,I}.
- Loại phần tử C, ta có {D,E,G,H,I}+ ≠ R nên K vẫn là {C,
D,E,G,H,I}
- Loại phần tử D, ta có: {C, E,G,H,I}+ = R vì pth
CG → AE khiến A thuộc về {C, E,G,H,I} + và
pth AC → B nên K ={C,E,G,H,I}.
- Loại phần tử E, ta có: {C, G,H,I}+ = R vì
pth CG → AE , AC → B , ABC→ D nên K ={C,G,H,I}.
- Loại phần tử G, ta có: {C, H,I}+ ≠ R
nên K vẫn là {C, G,H,I}.
- Loại phần tử H, ta có: {C, G,I}+ ≠ R
nên K vẫn là {C, G,H,I}.
- Loại phần tử I, ta có: {C,G,H}+ = R
vì CG → AE , AC → B, ABC→ D nên K={C,G,H}.
=> Vậy K={ C,G,H} là một khóa của r ( R )
0,25
Trang: 2/4
3
#include <conio.h>
#include <iostream.h>
#include <math.h>
int uscln(int a,int b)
{
while (!(a%b==0) )
{
int r=b; b=a%b;a=r;
}
return b;
}
class PS
{
private:
int t,m;
public:
void nhap();
void hienthi();
void rutgon();
PS operator+(const PS &p2);
void operator=(const PS &p2);
0,25
};
void PS:: nhap()
{
cout<<"\n Nhap tu so:"; cin>>t;
cout<<"Nhap mau so:"; cin>>m;
}
void PS:: hienthi()
{
cout <
}
void PS::rutgon()
{
int uc=uscln(t,m);
t=t/uc;
m=m/uc;
}
void PS::operator=(const PS &p2)
{
t=p2.t;
m=p2.m;
}
PS PS::operator+(const PS &p2)
{
PS tg;
tg.t=t*p2.m+p2.t*m;
tg.m=m*p2.m;
return tg;
}
Trang: 3/4
0,1
0,1
0,25
0,1
0,25
void nhapmangPS(PS *a,int n)
{
for (int i=1;i<=n;i++)
a[i].nhap();
}
0,25
PS tongmangPS(PS *a,int n)
{
PS tg;
tg=a[1];
for(int i=2;i<=n;i++)
tg=tg+a[i];
tg.rutgon();
return tg;
}
0,5
void main()
{
int n;
PS a[10],p2;
cout<<"\nNhap so phan so:"; cin>>n;
nhapmangPS(a,n);
p2=tongmangPS(a,n);
cout<<"Tong
cua
mang
cac
la:";p2.hienthi();
getch();
}
0,2
phan
so
II. Phần tự chọn
………,
Trang: 4/4
ngày ………. tháng ……. năm ………