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ã đề thi: DA LTMT - LT22
Câu
Nội dung
Điểm
I. Phần bắt buộc
1
7 điểm
Cơ sở dữ liệu
2.5 điểm
A. Ngôn ngữ SQL
1.5 điểm
1. Select nhanvien.manv,nhanvien.hoten
From nhanvien,phongban,chucvu
Where nhanvien.mapb=phongban.mapb and
0.5 điểm
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
0.5 điểm
0.5 điểm
phòng”
1 điểm
B. Ngôn ngữ đại số
1. T1=Nhanvien*Phongban*chucvu
T 2 ( tenpb"Kinh doanh" ^ luongcaonhat
Between 300 And 500)
(T1)
0.3 điểm
T 3 ( manv,hoten) (T 2)
2. T1 = ( mapb In (10 ,30,50 )) ( Nhanvien)
T2 =
0.3 điểm
(T 1)
( manv , hoten, ngay sinh, nu ,luong )
1/8
3. T1=nhanvien*chucvu
T2 = (tencv"Truong Phong ") (T 1)
T3 =
( manv , hoten, luong*12 )
0.4 điểm
(T 2)
2/8
2
2.5 điểm
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 trộn
(merge-sort)
1 điểm
*) Ý tưởng:
- 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 0.5 điểm
đưa phần tử đó vào dãy khóa mới.
Thực hiện q 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
{
if (a[i]
{
c[k]=a[i];
i++;
}
Else
{
z[k]=b[j];
j++;
}
k++;
}
If (i>=n)
{
for (i=j; i
{
z[k]=b[i];
k++;
}
3/8
0.5 điểm
}
else
for (j=i; j
{
z[k]=a[j];
k++;
}
}
4/8
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;
};
typedef struct tagNode
0.3 điểm
{ 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:”);
0.3 điểm
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:”);
scanf(“%d%f”, &tg.soluong, &tg.dongia);
tg.thanhtien=tg.dongia*tg.soluong;
moi -> infor =tg;
if (head ==NULL)
{
head = moi;
5/8
p=moi;
p -> link =NULL;
}
else
{
p -> link = moi;
p= moi;
p -> link =NULL;
}
}
}
6/8
void duyet()
{
Node *p;
p=head;
printf ( “ danh sach cac mat hang vua nhap la:”);
while ( p !=NULL)
0.3 điểm
{
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)
{
if(q->infor.thanhtien
infor.thanhtien)
0.3 điểm
{
tg=q->infor.thanhtien ;
q->infor.thantien =p->infor.thanhtien;
p->infor =tg;
}
q=q->link;
}
p=p->link;
}
}
void main()
{
clrscr() ;
printf ( ” nhap so nut ”) ;scanf (“ %d”, &n);
0.3 điểm
nhap();
duyet();
sapxep();
printf(“ danh sach cac mat hang sau sap xep la:”);
7/8
duyet();
getch();
}
3
Lập trình hướng đối tượng
2 điểm
- Hàm Constructor là hàm dùng để khởi tạo thành phần dữ liệu
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;
}
};
II. Phần tự chọn, do trường biên soạn
0.5 điểm
1.5 điểm
3 Điểm
Tổng cộng (I+II)
………, ngày ………. tháng ……. năm ……
8/8