Dưới đây là Đáp án đề thi tốt nghiệp cao đẳng nghề khoá II (năm 2008 - 2011) nghề Lập trình máy tính môn thi lý thuyết chuyên môn nghề - Mã đề thi: DA LTMT - LT37. Đáp án giúp các bạn củng cố kiến thức về truy vấn sau bằng ngôn ngữ đại số quan hệ, tính thừa kế,ý tưởng và giải thuật,... Mời các bạn tham khảo.
Trang 1CỘ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 - LT08
Hình thức thi: Viết tự luận
Thời gian: 150 phút (Không kể thời gian giao đề thi)
ĐÁP ÁN
I PHẦN BẮT BUỘC (7 điểm)
Câu 1: ( 3.0 điểm)
Hướng dẫn chấm
01 Trả lời các câu truy vấn sau bằng ngôn ngữ SQL:
a) Danh sách khách hàng (MAKH, TENKH) lắp đặt điện
thoại loại “Dây cáp”
Select KHACHHANG.MAKH, KHACHHANG.TENKH
from KHACHHANG, DIENTHOAI
where KHACHHANG.MAKH = DIENTHOAI.MAKH
and DIENTHOAI.LOAIDT = ‘Dây cáp’
b) Với mỗi dịch vụ có khách hàng đăng ký, hãy cho biết mã
dịch vụ, tên dịch vụ và tổng số điện thoại đăng ký dịch vụ
đó
Select DICHVU.MADV, DICHVU.TENDV, count(SODT) as
SodienthoaiDK
from DICHVU, DANGKY
where DICHVU.MADV = DANGKY.MADV
group by DICHVU.MADV, DICHVU.TENDV
Trả lời câu truy vấn sau bằng ngôn ngữ đại số quan hệ:
c) Liệt kê các số hợp đồng (SOHD) có đăng ký dịch vụ “Dịch
vụ 108”
1.0 điểm
1.0 điểm
1.0 điểm
Trang 2Câu 2: ( 2.0 điểm)
01 Tính thừa kế là gì
Tính thừa kế là việc sử dụng lại các đặc tính của lớp cơ sở
trong các lớp dẫn xuất Với tính thừa kế, để xây dựng các
đối tượng mới, chỉ cần thêm các đặc tính cần thiết vào lớp
dẫn xuất
Các loại thừa kế
- Thừa kế đơn
- Thừa kế bội
- Thừa kế ảo
Ví dụ
1 Thừa kế đơn:
Lớp cơ sở ANIMAL có lớp dẫn xuất là ELEPHANT:
class ANIMAL {
public:
void Eat();
void Sleep();
void Breathe();
}
class ELEPHANT : public ANIMAL {
public:
void Trumpet();
void Stampede();
}
2 Thừa kế bội:
Lớp xe đạp BICYCLE kế thừa từ hai lớp khung xe
FRAME và bánh xe WHEEL
class FRAM{
public:
// các chi tiết tạo nên khung xe
};
class WHEEL{
public:
// các chi tiết tạo nên bánh xe
};
class BICYCLE:FRAME,WHEEL{
// và các chi tiết khác
};
0.25 điểm
0.25 điểm
0.5điểm
0.5điểm
Trang 33 Thừa kế ảo:
Lớp B,C thừa kế ảo lớp A
class A {
public:
// các thuộc tính của A
};
class B: public virtual A {
// …
};
class C: public virtual A {
// …
};
0.5điểm
Câu 3: ( 2.0 điểm)
1 Trình bày ý tưởng và giải thuật của thuật toán sắp xếp
*) Ý 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 đư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
0.25 điểm
*) 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<n)&&(j<m)) {
if (a[i]<b[j]) {
0.25 điểm
Trang 4c[k]=a[i];
i++;
} Else {
z[k]=b[j];
j++;
} k++;
}
If (i>=n)
{
for (i=j; i<m;i++) {
z[k]=b[i];
k++;
} }
else
for (j=i; j<n;j++)
{
z[k]=a[j];
k++;
}
}
2 Tạo danh sách liên kết trong đó mỗi nút là thông 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 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
1.5 điểm
typedef struct MH
{ char ten[10];
float dongia, thanhtien;
int soluong;
};
0.3 điểm
Trang 5typedef 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<n; 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:”); 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;
}
}
}
0.3 điểm
void duyet()
{
Node *p;
p=head;
0.3 điểm
Trang 6printf ( “ danh sach cac mat hang vua nhap la:”);
while ( p !=NULL)
{
printf(« \n \t %s \t%d \t%f \t %f ”, >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 <p->infor.thanhtien) {
tg=q->infor.thanhtien ; q->infor.thantien =p->infor.thanhtien;
p->infor =tg;
} q=q->link;
} p=p->link;
}
}
0.3 điểm
void main()
{
clrscr() ;
printf ( ” nhap so nut ”) ;scanf (“ %d”, &n);
nhap();
duyet();
sapxep();
printf(“ danh sach cac mat hang sau sap xep la:”);
duyet();
getch();
}
0.3 điểm
Trang 7II PHẦN TỰ CHỌN (3 điểm)
……… Hết………