Tải bản đầy đủ (.docx) (2 trang)

1 SO BAI TAP PASCAL CO BAN LOP 8

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (62.51 KB, 2 trang )

<span class='text_page_counter'>(1)</span>BÀI TẬP VÀ LỜI GIẢI PASCAL Bài 1: Cho dãy số A=a1,a2,a3,.......,an(với a1,a2,....,an > 0 và n <= 100) viết chương trình nhập dãy số viết hàm tính số nhỏ nhất trong dãy số Bài 2: Cho S= a! + b! + c! Viết chương trình tính S ( lưu ý: viết hàm tính giai thừa) Bài 3: Cho dãy số A=a1,a2,a3,....,an ( với a1,a2,a3,....,an > 0 và n <=100) Viết chương trình nhập dãy số Viết hàm kiểm tra xem có bao nhiêu số lẻ nằm trong đoạn [2,9] Bài 4: Viết chương trình nhập xâu A, tìm xem trong đoạn sâu A có bao nhiêu kí tự 'C' ở vị trí lẻ Lưu ý: viết hàm để đếm có bao nhiêu kí tự 'C' ở vị trí lẻ LỜI GIAỈ Giải quyết câu 1: PROGRAM Bai1; UsesCRT; Var A:Array[1..100] of Integer; { Khai báo 1 Mảng A với số phần tử tối đa là 100, nên nhớ là tối đa nha, có thể xài ít hơn cũng ko sao} i,n:Integer; {Biến i là biến chạy từ phần tử đầu tiên đến phần tử cuối cùng, biến n để nhập số phần tử của dãy} Procedure NhapDaySo; Begin Write('Day so co bao nhieu phan tu: ');Readln(n); For i:=1 to n Do Begin Write('A[',i,']= ');Readln(A[i]); End; End; Procedure TimMin; Var Min, Tam:Integer;{Biến Min để lấy giá trị nhỏ nhất trong dãy, biến Tam để hoán đổi giá trị của 2 phần tử} Begin Min:=A[1]; For i:=2 to n Do If Min > A[i] Then Begin {Tiến hành hoán đổi giá trị } Tam:=Min; Min:=A[i]; A[i]:=Tam; End; Write('So nho nhat trong day la: ',Min); End; {Chương trình chính nè} BEGIN Clrscr;{lệnh lau màn hình, lệnh này muốn xài được phải khai báo thư viện CRT , mình đã khai báo CRT sau từ khoá Uses phía trên rùi đó, nếu không khai báo thì chương trình sẽ báo lỗi ở đây} NhapDaySo;Gọi thủ tục nhập vào dãy số} TimMax;{Gọi thủ tục tìm số nhỏ nhất trong dãy vừa nhập} Readln;{Tạm dừng chương trình để bạn nhìn thấy kết quả END.. }.

<span class='text_page_counter'>(2)</span> Giải quyết bài tập 2 PROGRAM Bai2; Var S1,S2,S3 : Longint;{S1 lưu giá trị của a!, S2 lưu b!,S3 lưu c!} a,b,c,i:Integer;{a,b,c nhập giá trị, i biến chạy} BEGIN Write('Nhap a= ');Readln(a); Write('Nhap b= ');Readln(b); Write('Nhap c= ');Readln(c); For i:=1 to a Do S1:=S1*i; { Tính a!} For i:=1 to b Do S2:=S2*i; {Tinhs b!} For i:=1 to c Do S3:=S3*i; {Tính c!} Write('Tong S can tim la S= ',S1 + S2 + S3); Readln; END. ---------------------------------------------------Nếu viết hàm thì làm như sau: PROGRAM Bai2; Var a,b,c,i : Integer; S1,S2,S3:Longint; Function TinhTongS(a,b,c:Integer) : Longint; Var S1,S2,S3,i:Integer; Begin For i:=1 to a Do S1:=S1*i; { Tính a!} For i:=1 to b Do S2:=S2*i; {Tinhs b!} For i:=1 to c Do S3:=S3*i; {Tính c!} TinhTongS:=S1+S2+S3; { Đây chính là giá trị trả về của hàm} End; {chương trình chính } BEGIN Write('Nhap a= ');Readln(a); Write('Nhap b= ');Readln(b); Write('Nhap c= ');Readln(c); Write('Tong can tim la S= ',TinhTongS(a,b,c)); Readln; END. __________________ Giải quyết bài 3: Bài 3 thì tương tự như bài 1 mà thôi, vì thế mình chỉ viết thủ tục để đếm xem trong đoạn [2..9] có bao nhiêu số lẻ ! Procedure Demsole; Var dem,i:Byte; BEGIN dem:=0;{ban đầu chưa đếm nên có giá trị là 0} For i:=2 to 9 do If (i mod 2 <> 0) Then dem:=dem + 1;{ hàm mod là hàm lấy số dư của i chia cho 2, nếu chia hết cho 2 thì là số chẵn, ngược lại là số lẻ} Write('Trong doan 2--9 co ', dem, ' so le'); End; Giả quyết bài 4: Function TimC( St:String):Byte; Var dem,i:Integer; Begin dem:=0; For i:=1 to length(St) Do If (St[i] ="C") and (i mod 2 <> 0) Then dem:=dem +1; TimC:=dem; End;.

<span class='text_page_counter'>(3)</span>

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×