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

Điểm TT Nội dung

7 điểm I. Phần bắt buộc

1,5 điểm Câu 1

1 Trình bày giải thuật tìm kiếm nhị phân không đệ quy. 0,75 điểm

0,25 điểm function TKNP(k,n,x);

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

0,75 điểm

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

thuật toán tìm kiếm nhị phân không đệ quy.

0,25 điểm

Cho một dãy khoá, chẳng hạn10, 15, 25, 30, 45, 50, 60,

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,

0,25 điểm

Trang:1/ 5

bước 3: tính m =9, a[9] = 80=>kết thúc 0,25 điểm

Câu 2 3,5 điểm

a 0,5 điểm

rutgon();

return PhanSo(-ts,ms);

int ts,ms; void rutgon(); public: PhanSo(int x=0,int y=1):ms(y),ts(x) { } operator int(); operator float(); PhanSo operator -() const { } //Cac phep toan co so friend int operator ==(const PhanSo&, const

friend PhanSo operator +(const PhanSo&,const

//Phep toan ket xuat du lieu cua mot phan so friend ostream& operator << (ostream& out,const

0,25 điểm 0,25 điểm

if(m==0) return n; return uscln(n%m,m);

if(n>m) { } if(n==0) return m; return uscln(m%n,n);

Định nghĩa hàm thiết lập để tạo đối tượng sao cho tử số là 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 #include class PhanSo { PhanSo&); PhanSo&); PhanSo& ps); }; int uscln(int n,int m) { } void PhanSo::rutgon() {

Trang:2/ 5

ms=-ms; ts=-ts;

if(ms<0) { } //tim uscln int usc=(ts>0)?uscln(ts,ms):uscln(-ts,ms); ts=ts/usc; ms=ms/usc;

} 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

bằng nhau, toán tử cộng hai phân số kết quả phải được tối giản.

//Toan tu chuyen kieu int tra ve phan chia nguyen

return ts/ms;

return float(ts)/ms;

PhanSo::operator int() { } //chuyen kieu thuc tra ve phan chia thuc PhanSo::operator float() { }

return(ps1.ts==ps2.ts&&ps1.ms==ps2.ms);

0,25 điểm 0,25 điểm 0,25 điểm

return

cua phan so //thuc hien cac toan tu cho lop phan so int operator = =(const PhanSo& ps1,const PhanSo& ps2) { } PhanSo operator +(const PhanSo& ps1,const PhanSo& ps2) { 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

c

2 điểm

d

ostream& operator << (ostream& out, const PhanSo& ps) { return (out << ps.ts <<"/" << ps.ms); } Viết hàm main thực hiện - 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.

0,5 điểm

so thu tin cho phan clrscr(); int i,a,b,n; cout<<"Nhap vao hai phan so"<

so thu thong tin cho phan cout<<"tu so=";cin>>a; cout<<"mau so=";cin>>b; PhanSo ps1(a,b); cout<<"Nhap

0,25 điểm 0,25 điểm

cout<<"tu so=";cin>>a; cout<<"mau so=";cin>>b; PhanSo ps2(a,b); cout<

1 điểm

"<

0,25 điểm 0,5 điểm 0,25 điểm

cout<

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() { nhat:"<

Trang:4/ 5

0,5 điểm

0,25 điểm 0,25 điểm

nhap vao";

cout<<"Nhap thong tin cho phan so can so sanh gia tri:"<

Đế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. }

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:5/ 5