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 - LT08
TT
Nội dung
I. Phần bắt buộc
7 điểm
Câu 1
1
Điểm
1,5 điểm
Trình bày giải thuật tìm kiếm nhị phân không đệ quy.
function TKNP(k,n,x);
0,75 điểm
0,25 điểm
1. l:=1; r:=n;
0.5 điểm
2. while l <= r do
begin
m := [(l + r)/2];
if X < k[m] then r := m-1
else
if X > k[m] then l:= m+1
else return(m);
end;
3. return(0);
2
Hãy đưa ra một dãy khoá bất kỳ gồm ít nhất 10 phần tử ,
sau đó mô tả các bước tìm kiếm một khoá nào đó theo
0,75 điểm
thuật toán tìm kiếm nhị phân không đệ quy.
Cho một dãy khoá, chẳng hạn10, 15, 25, 30, 45, 50, 60,
0,25 điểm
75, 80, 90. Minh hoạ tìm khoá X=80
Bắt đầu với l =1; r = 10;
bước 1: tính m = 5, a[5] <80 => r = 10, l = 6;
bước 2: tính m = 8, a[8] <80=> l =9; r = 10,
Trang:1/ 5
0,25 điểm
bước 3: tính m =9, a[9] = 80=>kết thúc
Câu 2
a
0,25 điểm
3,5 điểm
Định nghĩa hàm thiết lập để tạo đối tượng sao cho tử số là 0,5 điểm
số nguyên và mẫu số phải là số nguyên dương và phân số
được tối giản.
#include
0,25 điểm
#include
class PhanSo
{
int ts,ms;
void rutgon();
public:
PhanSo(int x=0,int y=1):ms(y),ts(x)
{
rutgon();
}
operator int();
operator float();
PhanSo operator -() const
{
return PhanSo(-ts,ms);
}
//Cac phep toan co so
friend int operator ==(const PhanSo&, const
PhanSo&);
friend PhanSo operator +(const PhanSo&,const
PhanSo&);
//Phep toan ket xuat du lieu cua mot phan so
friend ostream& operator << (ostream& out,const
PhanSo& ps);
};
int uscln(int n,int m)
0,25 điểm
{
if(n>m)
{
if(m==0) return n;
return uscln(n%m,m);
}
if(n==0) return m;
return uscln(m%n,n);
}
void PhanSo::rutgon()
{
Trang:2/ 5
if(ms<0)
{
ms=-ms;
ts=-ts;
}
//tim uscln
int usc=(ts>0)?uscln(ts,ms):uscln(-ts,ms);
ts=ts/usc;
ms=ms/usc;
b
}
Xây dựng toán tử chuyển kiểu, toán tử so sánh hai phân số 0,75 điểm
bằng nhau, toán tử cộng hai phân số kết quả phải được tối
giản.
c
d
//Toan tu chuyen kieu int tra ve phan chia nguyen
cua phan so
PhanSo::operator int()
{
return ts/ms;
}
//chuyen kieu thuc tra ve phan chia thuc
PhanSo::operator float()
{
return float(ts)/ms;
}
//thuc hien cac toan tu cho lop phan so
int operator = =(const PhanSo& ps1,const PhanSo& ps2)
{
return(ps1.ts==ps2.ts&&ps1.ms==ps2.ms);
}
PhanSo operator +(const PhanSo& ps1,const PhanSo&
ps2)
{
return
PhanSo(ps1.ts*ps2.ms+ps2.ts*ps1.ms,ps1.ms*ps2.ms);
}
Xây dựng toán tử xuất dữ liệu của một phân số.
0,25 điểm
0,25 điểm
0,25 điểm
0,25 điểm
ostream& operator << (ostream& out, const PhanSo& ps)
{
return (out << ps.ts <<"/" << ps.ms);
}
Viết hàm main thực hiện
2 điểm
- Nhập hai phân số và hiển thị ra màn hình tổng của hai
Trang:3/ 5
phân số đó.
- Nhập vào một dãy gồm n phân số và hiển thị ra màn hình
dãy phân số đó
- Đếm xem có bao nhiêu phân số có giá trị bằng một phân
số được nhập vào từ bàn phím.
Nhập hai phân số và hiển thị ra màn hình tổng của hai
phân số đó.
void main()
{
clrscr();
int i,a,b,n;
cout<<"Nhap vao hai phan so"<