Bài 2 viết chương trình vẽ hình 2.5điểm a Chữ nhật đặc 0.5đ b Chữ nhật rỗng 0.5đ c Tam giác cân đặc 0.5d d Tam giác cân rỗng 1đ Nhiệm vụ chương trình: Tên tập tin vehinh.pas -Cho hiện m
Trang 1ĐÁP ÁN Bài1 (2.5đ)
Viết chương trình trò chơi đánh tù tì giữa người và máy tính
Nhiệm vụ của chương trình
-Tên tập tin Tuti.pas
- Cho hiện mê nu hướng dẫn người chơi máy cho ra kết quả
Ví dụ : búa =B , bao = P , kéo =K
- Máy cho ra kết quả thắng , hòa hay thua
Cho nhập và khởi động được ran domize (1đ)
viết được chương trình chạy cho ra kết quả (1.5đ)
program tuti;
uses crt;
var so,i,j,k,n,m,dem:integer;
kt:boolean;
s1,s2:string;
nguoi:char;
t1,t2:set of 'a' 'z';
begin
clrscr;
writeln('tro choi oanh tu ti bat dau');
writeln('tro choi oanh tu bat dau ban ra gi bua=b bao =p keo=
k ');
read(nguoi);
randomize ;
so:=random(3);
case so of
0: case nguoi of
'p' : writeln('chuc mung ban thang may = '); 'k': writeln('chia buon ban thua may ');
'b' : writeln(' ban hue may ');
end;
1: case nguoi of
'b': writeln('chuc mung ban thang may = ');
'p': writeln('chia buon ban thua may ');
'k' : writeln(' ban hue may ');
end;
2: case nguoi of 'k':writeln('chuc mung ban thang may = '); 'b': writeln('chia buon ban thua may ');
'p' : writeln(' ban hue may ');
end;
Trang 2end;
readln;
readln;
end.
Bài 2 viết chương trình vẽ hình (2.5điểm)
a) Chữ nhật đặc 0.5đ
b) Chữ nhật rỗng 0.5đ
c) Tam giác cân đặc 0.5d
d) Tam giác cân rỗng 1đ
Nhiệm vụ chương trình:
Tên tập tin vehinh.pas
-Cho hiện mê nu để người sử dụng lựa chọn vẽ hình nào?
- Cho chọn kí tự để vẽ
- Hình chữ nhật cho phép nhập vào chiều dài ,chiều rộng -Tam giác cho nhập chiều cao
program vehinh;
uses crt;
var c,h,n,d,r,luachon:integer;
ch: char;
begin
clrscr;
writeln('ve hinh chu nhat dat nhap: 1');
writeln('ve hinh chu nhat rong nhap: 2');
writeln('ve tam giac can dac nhap: 3');
writeln('ve tam giac can rong nhap: 4');
writeln;
repeat
write('moi ban nhap so de chon ');readln(luachon);
until(0<luachon)and (luachon<5);
write('moi ban nhap ki tu de ve ');readln(ch);
case luachon of
1: begin
write('Nhap chieu dai hinh chu nhat dac');read(d);
write('Nhap chieu rong hinh chu nhat dac');read(r);
clrscr;
for c:=1 to d do
begin
for h:=1 to r do write(ch);
writeln;
end;
Trang 32: begin
write('Nhap chieu dai hinh chu nhat rong');read(d);
write('Nhap chieu rong hinh chu nhat rong');read(r);
clrscr;
for c:=1 to d do
begin
for h:=1 to r do
if (c=1) or (h=1)or (c=d) or(h=r) then write(ch)else write(' '); writeln;
end;
end;
3: begin
write('Nhap chieu cao tam giac dac');read(n);
clrscr;
for c:=1 to n do
begin
for h:=n-c+1 to n+c-1 do
begin
gotoxy(h,c);write(ch);
end;
writeln;
end;
end;
4: begin
write('Nhap chieu cao tam giac rong');read(n);
for h:=1 to n do
begin
for c:=1 to 2*n-1 do
if(c=n-h+1)or(c=n+h-1)or (h=n) then write(ch) else write(' '); writeln;
end;
end;
end;
readln;
readln;
end.
Trang 4Bài3: (2.5đ)
viết chưowng trình cho phép nhập hồ sơ tối đa 50
cán bộ gồn họ và tên,năm sinh,quê quán ,tiềnlương
Nhiệm vụ chương trình:
tên tập tin hoso.pas
- Mỗi lần nhập xong một hồ sơ đều có hỏi nhập nữa không (1đ)
- sau khi nhập cho hiện ra màn hình theo thứ tự đã nhập (0.5đ)
- Cho hiện ra màn hình theo thứ tự đã được sắp xếp theo tuổi (1đ)
program li_lich_can_bo;
uses crt;
const n=50;
type hoso = record
ht,qq:string;
ns,l:integer;
end;
var cb: array[1 n] of hoso;
socb,i,j:integer;
tl:char;
tam:hoso;
begin
clrscr;
writeln('chuong trinh nhap ho so');
i:=1;
socb:=0;
repeat
write('ho ten ',i,': '); readln(cb[i].ht);
write('que quan ',i,': '); readln(cb[i].qq);
write('nam sinh ',i,': '); readln(cb[i].ns);
write('luong ',i,': '); readln(cb[i].l);
i:=i+1;
socb:=socb+1;
writeln('co nhap nua khong C/K ');readln (tl);
until tl ='k';
writeln(socb, ' li lich can bo');
for i:=1 to socb do
begin
write(' ho ten can bo : ',cb[i].ht);
write(' que quan can bo: ',cb[i].qq);
write(' nam sinh can bo: ',cb[i].ns);
write(' luong can bo: ',cb[i].l);
Trang 5writeln;
end;
writeln('ho so sap xep theo tuoi');
for i:=1 to socb do
for j:=i+1 to socb do if cb[j].ns < cb[i].ns then
begin
tam.ht:= cb[i].ht;
tam.qq:= cb[i].qq;
tam.ns:= cb[i].ns;
tam.l:= cb[i].l;
cb[i].ht:= cb[j].ht;
cb[i].qq := cb[j].qq;
cb[i].ns:= cb[j].ns;
cb[i].l:= cb[j].l;
cb[j].ht := tam.ht;
cb[j].qq := tam.qq;
cb[j].ns := tam.ns;
cb[j].l := tam.l;
end;
for i:=1 to socb do
begin
write(' ho ten can bo :',cb[i].ht);
write(' que quan can bo: ',cb[i].qq);
write(' nam sinh can bo : ',cb[i].ns);
write(' luong can bo : ',cb[i].l);
writeln;
end;
readln;
end.
Bài 4 (2.5điểm)
Viết chương trình nhập một mảng hai chiều 3 cột 3 dòng và sắp xếp
Nhiệm vụ
tên tập tin xepmang.pas
- dữ liệu vào là mảng hai chiều 3 cột 3 dòng các số nguyên (0.5đ)
- dữ liệu ra mảng hai chiều 3 cột 3 dòng các số theo thứ tự đã nhập (0.5đ)
Trang 6- dữ liệu ra dãy theo mảng một chiều được sắp xếp (0.5đ)
- dữ liệu ra dãy đã theo mảng hai chiều được sắp xếp (1đ)
Ví dụ:
Dữ liêu ra 2
0 1 2 3 3 4 5 7 9
Dữ liêu ra 3
program nhapsapxepmanghaichieu;
uses crt;
const n =100;
var a:array[1 n,1 n] of integer;
b:array[1 n] of integer;
tam,k,min,i,j,z,tong:integer;
tl:char;
begin
repeat {vong lap cho bien tra loi}
clrscr;
{ bat dau nhap mang}
writeln('moi ban nhap tri cho mang hai chieu');
for i:=1 to 3 do
for j:=1 to 3 do
begin
write('a[',i,',',j,'] = ');
readln (a[i,j]);
end;
{bat dau viet mang}
writeln(' mang hai chieu da nhap la');
for i:=1 to 3 do
begin
Trang 7for j:=1 to 3 do write(a[i,j]:5);
writeln;
end;
{gan tri mang hai chieu cho mang 1 chieu}
k:=1;
for i:=1 to 3 do
for j:=1 to 3 do
begin
b[k]:= a[i,j];
k:=k+1;
end;
writeln;
{mang mot chieu la}
Writeln('mang mot chieu ');
for k:=1 to 9 do write(b[k]:5);
writeln;
{bat dau sap xep hinh xoan}
for i:=1 to 9 do
for j:=i+1 to 9 do if b[i]> b[j]then
begin
tam:=b[i];
b[i]:=b[j];
b[j]:=tam;
end;
writeln;
{mang mot chieu da sap xepla}
Writeln('mang mot chieu da sap xep ');
writeln;
for k:=1 to 9 do write(b[k]:5);
writeln;
{gan tri mang 1 chieu cho mang 2 chieu}
k:=1 ;
for i:=1 to 3 do
for j:=1 to 3 do
begin
a[i,j]:=b[k] ;
k:=k+1;
end;
writeln;
writeln(' mang hai chieu da sap xep theo hinh xoan la');
Trang 8for i:=1 to 3 do
begin
for j:=1 to 3 do write(a[i,j]:5);
writeln;
end;
writeln('ban co lam nua khong C/K ') ;readln(tl); until upcase (tl)='K'; {ket thuc vong lap repeat} end.