Giải bài tập Tin học 11

pdf29 trang | Chia sẻ: huu1989 | Lượt xem: 1191 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Giải bài tập Tin học 11, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
Gi¶i Bµi 
TËp Tin 
Häc 11 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
Ch−¬ng 1: 
ét sè kh¸i niÖm vÒ lËp tr×nh vµ ng«n ng÷ lËp tr×nh 
Bµi tËp 
1. Người ta phải xây dựng ngôn ngữ lập trình bậc cao vì 
- Ngôn ngữ lập trình bậc cao gần gũi với tự nhiên hơn, thuận tiện cho 
ñông ñảo người lập trình. 
- Ngôn ngữ lập trình bậc cao nói chung không phụ thuộc vào loại máy, 
cùng một chương trình có thể thực hiện ở nhiều máy khác nhau. 
- Chương trình viết bằng ngôn ngữ bậc cao dễ hiểu, dễ hiệu chỉnh và dễ 
nâng cấp hơn. 
- Ngôn ngữ lập trình bậc cao cho phép làm việc với nhiều kiểu dữ liệu và 
cách tổ chức dữ liệu ña dạng, thuận tiện cho mô tả thuật toán. 
2. Chương trình dịch là chương trình ñặc biệt, có chức năng chuyển ñổi 
chương trình ñược viết trên ngôn ngữ lập trình bậc cao thành chương 
trình thực hiện ñược trên máy tính. 
3. 
- Biên dịch: duyệt, kiểm tra, phát hiện lỗi, xác ñịnh chương trình nguồn 
có dịch ñược không. Dịch toàn bộ chương trình nguồn thành một 
chương trình ñích có thể thực hiện trên máy và có thể lưu trữ lại ñể sử 
dụng về sau khi cần. 
- Thông dịch: lần lượt dịch từng câu lệnh ra ngôn ngữ máy rồi thực hiên 
ngay câu lệnh vừa dịch ñược hoặc thông báo lỗi nếu không dịch ñược. 
4. Các ñiểm khác nhau giữa tên dành riêng và tên chuẩn: tên dành riêng 
không ñược dùng khác với ý nghĩa xác ñịnh, tên chuẩn có thể dùng với 
ý nghĩa khác. 
5. ðúng: tamgiac, bai5a, xemxonxiu_ngu... 
6. C: 6,23 → 6.23 
E: A20 tên chưa có giá trị 
G: 64 + H: ‘C → ‘C’I: ‘TRUE’ “true” là hằng logic. 
 M
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
Ch−¬ng 2: 
h−¬ng tr×nh ®¬n gi¶n 
Bµi Thùc Hµnh Sè 1 
 -----------------*****----------------- 
1. Sự khác nhau giữa hằng có ñặt tên và tên biến: Giá trị của hằng có ñặt 
tên không thay ñổi khi thực hiện chương trình còn giá trị của biến có 
thể thay ñổi tại từng thời ñiểm thực hiện chương trình. 
2. Khai báo biến nhằm những mục ñích sau: 
- Xác ñịnh kiểu của biến. Trình dịch sẽ biết cách tổ chức ô nhớ chứa giá 
trị của biến. 
- ðưa tên biến vào danh sách các ñối tượng ñược chương trình quản lí. 
- Trình dịch biết cách truy cập giá trị của biến và áp dụng thao tác thích 
hợp cho biến. 
3. integer, real, extended, longint. 
4. D 
5. C 
6. ))***1/(1/()/(*)1( xxxxazyxz +−++ 
7. a) 
b
a2 ; b)
2
abc ; c)
ac
b ; d) 
ba
b
+2
8. a) 
program bai8a; 
uses crt; 
var x,y:real; 
 kt:boolean; 
begin 
clrscr; 
write('Nhap x: ');readln(x); 
write('Nhap y: ');readln(y); 
kt:=false; 
if ((yabs(x)) or (y=abs(x))) 
then 
kt:=true; 
if kt then write('Diem vua nhap thuoc phan gach 
cheo') 
 C 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
else write('Khong thuoc'); 
readln 
end. 
VÝ Dô 
b) 
program bai8; 
uses crt; 
var x,y:real; 
 kt:boolean; 
begin 
clrscr; 
write('Nhap x: ');readln(x); 
write('Nhap y: ');readln(y); 
kt:=false; 
if (abs(y)<=1) and (abs(x)<=1) then 
kt:=true; 
if kt then write('Diem vua nhap thuoc phan gach 
cheo') 
else write('Khong thuoc'); 
readln 
end. 
VÝ Dô 
Bài 9. 
rogram bai9; 
uses crt; 
const pi= 3.1416; 
var a,s:real; 
begin 
clrscr; 
repeat 
write('Nhap ban kinh duong tron: '); 
readln(a); 
if a<0 then writeln('Nhap lai!'); 
until a>0; 
s:=(a*a*pi)/2; 
write('Dien tichphan gach cheo: ',s:8:3); 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
readln 
end. 
VÝ Dô 
Bài 10. 
program bai10; 
uses crt; 
const g= 9.8; 
var v, h:real; 
begin 
clrscr; 
repeat 
write('Nhap do cao: '); 
readln(h); 
if h<0 then writeln('Nhap lai!'); 
until h>0; 
v:=sqrt(2*g*h); 
write('Van toc: ',v:8:3); 
readln 
end. 
VÝ Dô 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
Ch−¬ng 3: 
Êu tróc rÏ nh¸nh vµ lÆp 
Bµi Thùc Hµnh Sè 2 
 -----------------*****----------------- 
1. SGK 
2. Câu lệnh ghép là một câu lệnh ñược hợp thành từ nhiều câu lệnh thành 
phần. Câu lệnh ghép nhằm thực hiện thao tác gồm nhiều thao tác thành 
phần. Mỗi thao tác thành phần ứng với một câu lệnh ñơn hoặc một câu lẹnh 
ghép khác. Câu lệnh ghép là một trong các yếu tố ñể tạo khả năng chương 
trình có cấu trúc. Các câu lệnh ñặt giữa begin và end; 
Bài 3. 
Program tong1a; 
Uses crt; 
Var S: real; 
 a, N: integer; 
begin 
 clrscr; 
 write('Nhap a: ');readln(a); 
 S:=1.0/a; 
 N:=1; 
 While n<=100 do 
 Begin 
 S:=S+1.0/(a+N); 
 N:=N+1; 
 End; 
 Writeln('Tong S la: ',S:8:4); 
 Readln 
End. 
VÝ Dô 
 C 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
Bài 4. 
a) 
program bai4a; 
uses crt; 
var x, y, z:real; 
begin 
 clrscr; 
write('nhap hai so x va y: '); readln(x,y); 
 if x*x+y*y<=1 then 
 begin 
 z:=(x*x+y*y); 
 writeln('tong can tim: ',z:9); 
 end; 
 if (x*x+y*y>1) and (y>=x) then 
 begin 
 z:=(x+y); 
 writeln('tong can tim: ',z:9); 
 end; 
 if (x*x+y*y>1) and (y<x) then 
 begin 
 z:=0.5; 
 writeln('tong can tim: ',z); 
 end; 
readln 
end. 
VÝ Dô 
b) 
program bai4b; 
uses crt; 
var x,y,z,a,b,r:real; 
begin 
clrscr; 
 write('Nhap x: ');readln(x); 
 write('Nhap y: ');readln(y); 
 write('Nhap toa do tam hinh tron: '); 
 readln(a,b); 
 write('Nhap ban kinh r: ');readln(r); 
 if sqrt(sqr(x-a)+sqr(x-b))<r then 
 begin 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
z:=abs(x)+abs(y); 
writeln('Z= ',z:3:3); 
 end 
else 
 begin 
 z:=x+y; 
 writeln('Z= ',z:3:3); 
 end; 
readln 
end. 
VÝ Dô 
Bài 5. 
a) 
Program bai5a; 
Uses crt; 
Const n=50; 
Var i: integer; 
 Y:real; 
Begin 
 Clrscr; 
 for i:=1 to n do 
 Y:=i/(i+1); 
 Write('Tong Y: ',y:9:3); 
 Readln 
End. 
VÝ Dô 
b) 
program bai5b; 
uses crt; 
var n:longint; 
 e,sh:real; 
begin 
clrscr; 
 sh:=1/2; 
 n:=2; 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
 e:=2+sh; 
 while sh>=2*1e-16 do 
 begin 
 n:=n+1; 
 sh:=sh*(1/n); 
 e:=e+sh; 
 end; 
 writeln('Gia tri e(n) la: ',e:10:6); 
readln 
end. 
VÝ Dô 
Bài 6. 
program Bai6; 
uses crt; 
var x, y:byte; 
begin 
clrscr; 
for x:=1 to 36 do 
for y:=0 to 20 do 
if (x+y=36) and (2*x+4*y=100) then 
begin 
writeln('Co ',x,' con Ga'); 
write('Co ',y,' con Cho'); 
end; 
readln 
end. 
VÝ Dô 
Bài 7. 
program Bai7; 
uses crt; 
var b, c, n:byte; 
begin 
clrscr; 
repeat 
 write('Nhap tuoi cha: ');readln(b); 
 write('Nhap tuoi con: ');readln(c); 
 if (b-c<25) or (b<2*c) then 
 writeln('Du lieu khong hop le,nhap lai.'); 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
until (b-c>=25) and (b>=2*c); 
 if b=2*c then 
 writeln('Hien nay tuoi cha gap hai lan tuoi con.') 
 else 
 if b>2*c then 
 writeln('Sau ',b-2*c,' nam tuoi cha se gap doi tuoi 
con'); 
readln 
end. 
VÝ Dô 
Bài 8. 
program Bai8; 
uses crt; 
var A, B, St, Luu :real; 
 n:byte; 
begin 
clrscr; 
write('Nhap so tien gui: ');readln(a); 
write('Nhap so tien nhan: ');readln(b); 
luu:=A; n:=0; st:=a; 
 while St<=B do 
begin 
 St:=St+luu*0.003; 
 n:=n+1; 
end; 
 writeln('So thang can la: ',n); 
readln 
end. 
VÝ Dô 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
Ch−¬ng 4: 
iÓu d÷ liÖu cã cÊu tróc 
Bµi Thùc Hµnh Sè 3 
 -----------------*****----------------- 
Bài 1. 
program sum1; 
uses crt; 
const nmax=100; 
type Myarray=array[1..nmax] of integer; 
var A:myarray; 
 s,n,i,k:integer; 
 posi,neg:integer; 
begin 
clrscr; randomize; 
write('Nhap n: ');readln(n); 
for i:=1 to n do A[i]:=random(300)-random(300); 
for i:=1 to n do write(A[i]:5); writeln; 
for i:=1 to n do 
if A[i]>0 then posi:=posi+1 
else if A[i]<0 then 
neg:=neg+1; 
writeln('Co ',posi,' so duong va ',neg,' so am trong 
mang'); 
write('Nhap k: ');readln(k); 
s:=0; 
for i:=1 to n do 
if A[i] mod k = 0 then s:=s+A[i]; 
writeln('Tong can tinh la: ',s); 
readln 
end. 
 K 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
VÝ Dô 
Bài này cho kết quả ngẫu nhiên nên kết quả của các bạn có thể khác. 
Bài 2. 
program mang2; 
uses crt; 
var A:array[1..100] of integer; 
 n,i,j,max:integer; 
begin 
clrscr; 
write('Nhap so luong phan tu: ');readln(n); 
for i:=1 to n do 
begin 
write('Nhap phan tu thu ',i,': '); readln(a[i]); 
end; 
max:=a[1]; 
for i:=2 to n do 
if a[i]>a[i-1] then max:=A[i]; 
for j:=1 to n do if a[j]=max then 
writeln('chi so phan tu lon nhat: ',j); 
readln 
end. 
VÝ Dô 
Chú ý: Các bạn sửa lại chương trình ñể ñưa ra kết quả hợp lí, các chỉ số của 
phần tử lớn nhất cùng nằm trên một dòng. 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
Bµi Thùc Hµnh Sè 4 
 -----------------*****----------------- 
Bài 1. 
uses crt; 
var A:array[1..250] of integer; 
 n,i,j,y,dem,t:integer; 
begin 
clrscr; 
randomize; 
write('Nhap n: ');readln(n); 
for i:=1 to n do A[i]:=random(300)-random(300); 
for i:=1 to n do write(A[i]:5); 
writeln; 
dem:=1; 
for j:=n downto 2 do 
 for i:=1 to j-1 do 
 if A[i]>A[i+1] then 
 begin 
 t:=a[i]; 
 a[i]:=a[i+1]; 
 A[i+1]:=t; 
 dem:=dem+1; 
 end; 
 write('Sau khi dao ',dem,' lan'); 
 for i:=1 to n do 
 write(A[i]:7); 
 writeln; 
 readln 
 end. 
VÝ Dô 
Bài này cho kết quả là ngẫu nhiên. 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
Bµi Thùc Hµnh Sè 5 
 -----------------*****----------------- 
Bài 1. 
program xau; 
uses crt; 
var i, x:byte; 
 S: string; 
 kt:boolean; 
begin 
clrscr; 
write('Nhap xau: ');readln(s); 
x:=length(S); 
kt:=true; 
for i:=1 to x div 2 do 
 if S[i]S[x-i+1] then kt:=false; 
 if kt then write('Xau la palindrome') 
 else write('Xau khong la palindrome'); 
 readln 
end. 
VÝ Dô 
Bài 2. 
program Bai2; 
uses crt; 
var S:string; 
 i,n,dem:integer; 
 ch:char; 
begin 
clrscr; 
write('Nhap xau: ');readln(S); 
for i:=1 to length(S) do 
s[i]:=upcase(s[i]); 
for ch:='A' to 'Z' do 
begin 
dem:=0; 
for i:=1 to length(s) do 
if s[i]=ch then dem:=dem+1; 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
if dem>0 then 
writeln('Trong xau co ',dem,' chu ',ch); 
end; 
readln 
end. 
VÝ Dô 
Bài 3. 
program anhem; 
uses crt; 
var S:string; 
 i,n:integer; 
begin 
clrscr; 
write('Nhap xau: ');readln(s); 
while pos('anh',s) 0 do 
begin 
n:=pos('anh',s); 
delete(S,n,3); 
insert('em',s,n); 
END; 
write('Xau moi: ',s); 
readln 
end. 
VÝ Dô 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
Bµi tËp ch−¬ng 4 
1. Mảng là kiểu dữ liệu có cấu trúc bởi vì mảng là kiểu có cấu trúc ñược 
ñề cập tới sớm nhất trong các ngôn ngữ lập trình. Nó ñược xây dựng 
từ những kiểu dữ liệu ñã có theo quy tắc khuôn dạng do ngôn ngữ lập 
trình cung cấp. Nó ñược dùng ñể chỉ ñịnh một nhóm ñối tượng cùng 
một tính chất nào ñó. 
2. Chúng ta phải khai báo kích thước mảng bởi vì ñể cách ñánh số các 
phần tử của nó. 
3. real, boolean, integer, longint. 
4. Tham chiếu ñến phần tử của mảng một chiều ñược xác ñịnh bởi tên 
mảng cùng với chỉ số, ñược viết trong cặp ngoặc [..] (Ví dụ A[1]). Còn 
tham chiếu ñến phần tử của mảng 2 chiều ñược xác ñịnh bởi tên mảng 
cùng với 2 chỉ số ñược phân cách bởi dấu phẩy và viết trong cặp ngoặc 
[..] (A[1,2]). 
Bài 5. 
uses crt; 
var a:array[1..100] of integer; 
 n,i,d:integer; 
 csc:boolean; 
begin 
clrscr; 
write('Nhap n: ');readln(n); 
for i:=1 to n do 
begin 
repeat 
write('Nhap phan tu thu ',i,': '); 
readln(a[i]); 
if abs(a[i])>1000 then writeln('Nhap so nho hon 
1000'); 
until abs(a[i])<=1000; end; 
csc:=false; 
d:=a[2]-a[1]; 
for i:=2 to n do 
if a[i+1]-a[i]=d then csc:=true; 
if csc then writeln('Day la cap so cong') else 
write('Day khong la cap so cong'); 
readln end. 
VÝ Dô 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
Bai 6. 
program bai6; 
uses crt; 
var A:array[1..100] of integer; 
 i,n,dem,u,d:integer; 
begin 
clrscr; 
write('Nhap so luong phan tu: ');readln(n); 
for i:=1 to n do 
begin 
repeat 
write('Nhap phan tu thu ',i,': '); 
readln(a[i]); 
if abs(A[i])>1000 then write('Nhap so <1000 OK'); 
until abs(A[i])<1000; 
end; 
dem:=0; 
for i:=1 to n do 
begin 
if a[i] mod 2= 0 then dem:=dem+1 
end; 
writeln('So luong so le: ',n-dem); 
writeln('So luong so chan: ',dem); 
for i:=1 to n do 
if a[i]>1 then 
begin 
u:=2; 
while (u<=sqrt(A[i])) and 
(A[i] mod u 0) do 
u:=u+1; 
if u>sqrt(A[i]) then d:=d+1; 
end; 
write('So luong so nguyen to: ',d); 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
readln 
end. 
VÝ Dô 
Bài 7. 
program bai7; 
uses crt; 
var n, i:word; f, f1,f2:word; 
begin 
clrscr; 
repeat 
write('Nhap N: ');readln(n); 
if n2 OK!'); 
until n>=2; 
f1:=1; 
f2:=2; 
for i:=3 to n do 
begin 
f:=f1+f2; 
f1:=f2; 
f2:=f; 
end; 
write('So fibonaxi thu ',n,' la ' ,f); 
readln 
end. 
VÝ Dô 
Ch−¬ng tr×nh thùc hiÖn ®Õn 
Nmax=10001. 
Bài 8. 
Chương trình thực hiện việc hoán ñổi vị trí dòng thứ i với dòng thứ N-i+1, 
nghĩa là hoán ñổi vị trí dòng ñầu tiên với dòng cuối cùng của mảng hai 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
chiều, dòng thứ hai từ trên xuống với dòng thứ hai từ dưới lên, Việc hoán 
ñổi vị trí dòng thứ i với dòng ñối xứng với nó ñược thực hiện khi i nhận giá 
trị từ 1 ñến N, làm cho mỗi dòng ñược hoán ñổi vị trí 2 lần. Vì vậy mạng A 
sau khi hoán ñổi không thay ñổi so với ban ñầu. 
Bài 9. 
program bai9; 
uses crt; 
var A:array[1..15,1..15] of integer; 
 N, i, j, max, ind, vsp:integer; 
begin 
clrscr; 
write('Nhap N: ');readln(n); 
for i:=1 to n do 
 for j:=1 to n do 
 begin 
 write('Nhap A[',i,',',j,']: '); 
 readln(A[i,j]); 
 end; 
 for i:=1 to n do 
 begin 
 max:=A[1,i];ind:=1; 
 for j:=2 to n do 
 if A[j,i] > max then 
 begin 
 max:=A[j,i]; 
 ind:=j; 
 end; 
 vsp:=A[i,i]; 
 A[i,i]:=max; 
 A[ind,i]:=vsp; 
 end; 
 for i:=1 to n do 
 begin 
 writeln; 
 for j:=1 to n do write(A[i,j]:3); 
 end; 
 writeln; 
 readln 
end. 
VÝ Dô 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
Bài 10. 
program bai10; 
uses crt; 
var S:string; 
 i,dem,n:integer; 
begin 
clrscr; 
write('Nhap xau: ');readln(S); 
n:=length(S); 
dem:=0; 
for i:=1 to n do 
if (s[i]>='0') and (s[i]<='9') then inc(dem); 
write('Co ',dem,' chu so trong xau vua nhap'); 
readln 
end. 
VÝ Dô 
Bai 11. 
program bai11; 
uses crt; 
const max=60; 
type Hocsinh = record 
 hoten:string[30]; 
 ngaysinh:string[10]; 
 diachi:string[50]; 
 toan, van:real; 
 xeploai:char; 
 end; 
var lop:array[1..max] of hocsinh; 
 N, i:byte; 
begin 
clrscr; 
write('Nhap so luong hoc sinh: ');readln(n); 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
for i:=1 to n do 
with lop[i] do {Chó ý c©u lÖnh nµy} 
begin 
writeln('Nhap so lieu hoc sinh thu ',i,':'); 
write('Ho va ten: ');readln(hoten); 
write('Ngay sinh: ');readln(ngaysinh); 
write('Dia chi : ');readln(diachi); 
write('Diem toan: ');readln(toan); 
write('Diem van : ');readln(van); 
if toan+van>=18 then xeploai:='A'; 
if (toan+van>=14) and (toan+van<18) then 
xeploai:='B'; 
if (toan+van>=10) and (toan+van<14) then 
xeploai:='C'; 
if (toan+van<10) then 
xeploai:='D'; 
end; 
clrscr; 
writeln('Danh sach hoc sinh:'); 
for i:=1 to n do 
with lop[i] do 
writeln(hoten:30,'- xep loai: ',xeploai); 
writeln('Danh sach hoc sinh loai A:'); 
for i:=1 to n do 
with lop[i] do 
if xeploai='A' then 
writeln(hoten:30); 
readln 
end. 
VÝ Dô 
NhËp vµo 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
KÕt qu¶ 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
Ch−¬ng 5: 
hao t¸c víi tÖp 
Bµi tËp ch−¬ng 
1. Một số trường hợp phải dùng tệp: lưu trữ lượng thông tin lớn, dùng 
lâu dài, ít thay ñổi như tên người trong một cơ quan, hồ sơ của sinh 
viên, lương cán bộ,.... 
2. SGK 
3. Phải mở tệp trước khi ñọc tệp vì trước khi sử dụng tệp phải có câu 
lệnh mở tệp ñể trình dịch biết thực hiện mục ñích mở tệp ñể ñọc hay 
ghi, ñồng thời ñặt con trỏ tệp vào vị trí thích hợp 
4. Phải dùng lệnh ñóng tệp sau hi ñã kết thúc ghi dữ liệu vào tệp ñể thống 
tất việc ghi dữ liệu ra tệp. Không có câu lệnh ñóng tệp thì chương trình 
sẽ không thể ghi ñược dữ liệu vào tệp. 
 T 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
Ch−¬ng 6: 
h−¬ng tr×nh con vµ lËp tr×nh cã 
cÊu tróc 
Bµi Thùc Hµnh Sè 6 
 -----------------*****----------------- 
Chương trình 
program thuchanh6; 
uses crt; 
type str = string[79]; 
var S1, S2:str; 
 dong:byte; 
 dung:boolean; 
procedure catdan(s1:str; var s2: str); 
begin 
s2:=copy(s1,2,length(s1)-1)+S1[1]; 
end; 
procedure cangiua(var s:str); 
var n, i:integer; 
begin 
n:=length(s); 
n:=(80-n) div 2; 
for i:=1 to n do s:=' '+s; 
end; 
procedure chuchay(s1:str; dong:byte); 
var s2:str; 
 dung:boolean; 
begin 
clrscr; 
cangiua(s1); 
clrscr; 
dung:=false; 
while not(dung) do 
begin 
gotoxy(1,dong); 
write(s1); 
delay(100); 
catdan(s1,s2); 
s1:=s2; 
 C 
24 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
dung:=keypressed; 
end; 
end; 
begin 
clrscr; 
write('Nhap xau : ');readln(s1); 
write('Nhap dong: ');readln(dong); 
chuchay(s1,dong); 
readln 
end. 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
Bµi Thùc Hµnh Sè 7 
 -----------------*****----------------- 
program ttamgiac; 
uses crt; 
const eps=1.0e-6; 
type 
 diem=record 
 x, y:real; 
 end; 
 tamgiac=record 
 a, b, c:diem; 
 end; 
var T:tamgiac; 
 d, cn, v: boolean; 
 n, i, deu, can, vuong:word; 
 f,g:text; 
function khcach(P, Q: Diem):real; 
begin 
khcach:=sqrt((P.x-Q.x)*(p.x-q.x)+(p.y-Q.y)*(p.y-Q.y)); 
end; 
procedure daicanh(var R:tamgiac; var a, b, c:real); 
begin 
a:=khcach(R.B, R.C); 
b:=khcach(R.A, R.C); 
c:=khcach(R.A, R.B); 
end; 
procedure tinhchat(var R: tamgiac; var 
deu,can,vuong:boolean); 
var a, b, c:real; 
begin 
deu:=false; can:=false; vuong:=false; 
daicanh(R,a,b,c); 
if (abs(a-b)<eps) and (abs(a-c)<eps) then 
deu:=true 
else 
if (abs(a-b)<eps) or (abs(a-c)<eps) or (abs(b-c)<eps) 
then 
can:=true; 
if (abs(a*a+b*b-c*c)<eps) or (abs(a*a+c*c-b*b)<eps) 
or (abs(b*b+c*c-a*a)<eps) then 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
vuong:=true; 
end; 
begin 
deu:=0; 
can:=0; 
vuong:=0; 
assign(f,'tamgiac.dat'); 
reset(f); 
readln(f,n); 
assign(g,'tamgiac.out'); 
rewrite(g); 
for i:=1 to n do 
begin 
readln(f, T.A.x, T.A.y, T.B.x, T.B.y, T.C.x, T.C.y); 
tinhchat(T,D,cn,v); 
if d then deu:=deu+1 else 
begin 
if cn then can:=can+1; 
if v then vuong:=vuong+1; 
end; 
end; 
writeln(g,'co ',deu,' tam giac deu'); 
writeln(g,'co ',can,' tam giac can'); 
writeln(g,'co ',vuong,' tam giac vuong'); 
close(f);close(g); 
end. 
VÝ Dô 
TÖp v¨n b¶n chøa täa ®é c¸c ®Ønh cña c¸c tam gi¸c 
Vµo file-open-gâ tamgiac.dat-nh¸y nót open råi nhËp d÷ liÖu 
nh− d−íi, nhÊn f2 ®Ó l−u l¹i 
Vµo file-open-gâ tamgiac.out-nh¸y nót open råi nhÊn f2 l−u 
l¹i. NhÊn f6 chuyÓn sang cöa sæ ch−¬ng tr×nh vµ ch¹y ch−¬ng tr×nh. Ch¹y xong 
nhÊn yes, nhÊn f6 cho ®Õn khi xuÊt hiÖn cöa sæ v¨n b¶n tamgiac.out xem 
kÕt qu¶. 
TÖp v¨n b¶n chøa kÕt qu¶ sau khi thùc hiÖn ch−¬ng tr×nh 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
Bµi tËp ch−¬ng 
1. SGK 
2. Chương trình con không có tham số 
Procedure ve; 
Begin 
Writeln(‘****************’); 
Writeln(‘*I love you ok!*’); 
Writeln(‘****************’); 
End; 
3. Chương trình con cho nhiều hơn một kết quả: 
Procedure hoandoi(var x, y:integer); 
Var tg:integer; 
Begin 
Tg:=x; 
X:=y; 
Y:=tg; 
End; 
4. 
program bai4; 
uses crt; 
var x, y:integer; 
function ucln(a, b:integer): integer; 
var r:integer; 
begin 
while b>0 do 
begin 
r:=a mod b; 
a:=b; 
b:=r; 
end; 
ucln:=a; 
end; 
function bcnn(a, b:integer): integer; 
begin 
Great by: Nguyễn Trọng Hoàng Email: quanaxiem_lovelytnt@yahoo.com 
bcnn:=a*b div ucln(a,b); 
end; 
begin 
clrscr; 
write('Nhap x: ');readln(x); 
write('Nhap y: ');readln(y); 
write('Boi chung nho nhat: ',bcnn(x,y)); 
readln 
end. 
VÝ Dô 

File đính kèm:

  • pdftin hoc hay.pdf
Đề thi liên quan