Tài liệu Một số bài tập lập trình Pascal - Pdf 10

Một số bài tập lập trình Pascal
Vấn đề 1: Cấu trúc điều khiển
Bài toán số 1.1: Tính tổng của các số tự nhiên từ 1 đến N.
S = 1 + 2 + … + N
Ví dụ : N = 5, S = 1 + 2 + 3 + 4 + 5 = 15
Yêu cầu: Input: N, là số tự nhiên bất kỳ.
Output: S, là tổng của các số từ 1 đến N
Hướng dẫn:
Bài toán được thực hiện qua 3 bước cụ thể như sau:
- Thông báo nhập liệu, và nhập dữ liệu vào cho N
- Tiến hành tính tổng S:
o Khởi gán giá trị ban đầu cho tổng S
o Tiến hành tính tổng, cộng dồn với các giá trị của i vào S (với i được lặp từ 1 cho đến N)
- Xuất kết quả của tổng S ra màn hình.
Chương trình:
Program TinhTong;
Uses crt;
Var S,i,n:Integer; // Khai bao bien su dung
BEGIN
Write( ‘ Nhap so n:’ ); // Thong bao nhap lieu
Readln( n ); // Nhap gtri N, (voi &N la lay d/c bien N)
S: = 0; // Khoi gan gia tri ban dau cho S
For i:=1 to n do // Lap voi moi i co gia tri tu 1 den N
S:=S + i; // Tinh tong cong don i vao S
Writeln( ‘Tong = ’, S); // Xuat ket qua tong S ra man hinh
Readln;
END.
Các phiên bản khác nhau của bài toán là:
⊕ Tính tổng (với giả sử N là số lẻ)
⊕ Tính tổng các số tự nhiên lẻ nhỏ hơn hoặc bằng N.
⊕ Tính tổng các số tự nhiên chia hết cho 5 như 5, 10, 15, 20, 25, 30….N

Uses crt;
Var n , i :Integer; // Khai bao bien su dung
BEGIN
Write(‘Nhap vao mot so:’); // Thong bao nhap lieu
Readln(n); // Nhap gtri N, (voi &N la lay d/c bien N)
i := round( sqrt(n) );
If( n mod i <> 0) then // Xuat cau tra loi cuoi cung
Writeln(‘ N la so nguyen to’)
Else
Writeln(‘ N khong la so nguyen to’);
Readln;
END.
Bài toán số 1.3: Tìm USCLN(a, b) va BSCNN(a, b)
Ví dụ: USCLN(18, 24) = 4 và BSCNN(18, 24) = 72
Yêu cầu: Input: a, b là 2 số tự nhiên.
Output: USCLN và BSCNN của a và b
Một số lưu ý:
- Nếu i là ước số của a và b thì a và b đồng thời chia hết cho i
- Luôn luôn có tối thiểu một USCLN của a và b là 1.
- Nếu i là USCLN thì i là ước số nhỏ hơn cả a lẫn b và gần a, b nhất.
Như vậy, nếu sử dụng một vòng lặp để kiểm tra a,b có đồng thời chia hết cho i hay không thì i là
USCLN khi:
+ i là USC (a, b cùng chia hết cho i) cuối cùng nếu i lặp từ 1 đến a (hoặc b).
+ i là USC (a, b cùng chia hết cho i) đầu tiên nếu lặp từ a (hoặc b) quay về 1.
- BSCNN(a, b) = a * b / (USCLN(a, b)
Hướng dẫn:
Bài toán được thực hiện qua 3 bước cụ thể như sau:
- Thông báo nhập liệu, và nhập dữ liệu vào cho a và b
- Tiến hành tính USCLN(a, b):
Sử dụng vòng lặp for, lặp từ a lùi về 1.

Lặp lại cho đến khi N = 0 thì dừng
Chương trình:
Program tong;
Uses crt;
Var n , s , k: integer; // Khai bao bien su dung
Begin
Write(‘ Nhap N:’); // Thong bao nhap lieu
Readln(N ); // Nhap gtri cho N
S := 0;
While ( N <> 0 ) do // Lap trong khi N con ≠ 0
Begin
k := N mod 10; // Lay chu so hang don vi o cuoi cung
N := N div 10; // Cat chu so hang don vi da duoc lay ra
S := S + k; // Tinh tong cong don vao S
End;
Writeln( ‘Tong cac chu so cua ’,N,’ la :’, S); // Xuat ket qua
Readln;
End.
Bài toán số 1.5: Cho 14/03/2003 là một ngày trong năm. Hãy xác định xem thử ngày này là này thứ bao
nhiêu của năm đó.
Ví dụ: Ngày nhập vào 14/03/2003, Kết quả: Ngay thu 73 cua nam 2003
Yêu cầu : - Input: 3 số ngay, thang, nam
- Output: So thu tu cua ngay
Hướng dẫn:
- Khởi gán stt là 0
- Với ví dụ trên, tính tổng cộng dồn số ngày của các tháng trước tháng 03 (cụ thể là tháng 01, tháng
02) vào stt. Sử dụng câu lệnh rẽ nhánh case để biết số ngày của các tháng.
- Bổ sung thêm số ngày của tháng hiện tại (ngay 14) vào stt.
Giải quyết bài toán với ngôn ngữ C
- Khai báo các thư viện sử dụng

Ví dụ: Nhập stt = 84 thì kết quả là 25/04.
Hướng dẫn: Làm theo chiều ngược lại.
- Giả sử ban đầu xuất phát với thang là 1. Nếu stt lớn hơn số ngày cua tháng (thang ) thì tiến
hành:
o thang tăng lên 1
o stt được gán bằng stt trừ đi số ngày của tháng đó.
- Lặp lại quá trình trên cho đến khi stt nhỏ hơn hoặc bằng số ngày trong tháng.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status