1 SO BAI TAP PASCAL CO BAN LOP 8

2 32 0
1 SO BAI TAP PASCAL CO BAN LOP 8

Đang tải... (xem toàn văn)

Thông tin tài liệu

[r]

(1)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 > và n <= 100) viết chương trình nhập dãy số viết hàm tính số nhỏ 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 > 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 đoạn [2,9] Bài 4: Viết chương trình nhập xâu A, tìm xem đ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 câu 1: PROGRAM Bai1; UsesCRT; Var A:Array[1 100] of Integer; { Khai báo 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 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ử 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ỏ dãy, biến Tam để hoán đổi giá trị 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 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 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 đó, không khai báo thì chương trình 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ỏ dãy vừa nhập} Readln;{Tạm dừng chương trình để bạn nhìn thấy kết END } (2) Giải bài tập PROGRAM Bai2; Var S1,S2,S3 : Longint;{S1 lưu giá trị 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 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ả 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 bài 3: Bài thì tương tự bài mà thôi, vì mình viết thủ tục để đếm xem đ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 If (i mod <> 0) Then dem:=dem + 1;{ hàm mod là hàm lấy số dư i chia cho 2, chia hết cho thì là số chẵn, ngược lại là số lẻ} Write('Trong doan co ', dem, ' so le'); End; Giả 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 <> 0) Then dem:=dem +1; TimC:=dem; End; (3)

Ngày đăng: 07/09/2021, 05:36

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan