1. Trang chủ
  2. » Trung học cơ sở - phổ thông

1 SO BAI TAP PASCAL CO BAN LOP 8

2 35 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 2
Dung lượng 10,14 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

[r]

Trang 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 > 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

Trang 2

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;

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w