BÀI TẬP VÀ LỜI GIẢI PASCAL.doc
Chia sẻ bởi Vũ Mạnh Điệp |
Ngày 16/10/2018 |
40
Chia sẻ tài liệu: BÀI TẬP VÀ LỜI GIẢI PASCAL.doc thuộc Tin học 9
Nội dung tài liệu:
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.
Giải quyết bài tập 2 PROGRAM Bai2; Uses CRT; 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 Clrscr; 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; Uses Crt; 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 clrscr; 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
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.
Giải quyết bài tập 2 PROGRAM Bai2; Uses CRT; 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 Clrscr; 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; Uses Crt; 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 clrscr; 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
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Vũ Mạnh Điệp
Dung lượng: 39,00KB|
Lượt tài: 0
Loại file: doc
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)