Tải bản đầy đủ (.doc) (6 trang)

bai tap tin 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 (97.76 KB, 6 trang )

Bài tập Tin 8 (SBT)
Bài 8: Lệnh lặp While ... Do
8.6. Hãy viết các câu lệnh Pascal yêu cầu ngời sử dụng nhập một số thực nằm trong
khoảng từ 1 đến 10 và yêu cầu nhập lại nếu số không thoả mãn.
8.8. Hãy viết chơng trình thực hiện các nhiệm vụ sau đây:
a. Nhập từ bàn phím một số nguyên n biểu diễn sĩ số của một lớp (1<=n<=45).
Khi ngời sử dụng nhập một số nguyên ngoài khoảng này, chơng trình cảnh báo và yêu
cầu nhập lại. Chơng trình chỉ kết thúc khi một số hợp lệ đợc nhập.
b. Nhập vào từ bàn phím một số thực x, biểu diễn điểm của học sinh (0<=x<=10)
và đợc làm tròn đến một phần t điểm. Ví dụ, các số nhập vào hợp lệ là 7.25, 6.5, 9.0,
8.75. Chơng trình cảnh báo khi số nhập vào không hợp lệ và yêu cầu nhập lại. Chơng
trình chỉ kết thúc khi một số hợp lệ đợc nhập.
8.9. Viết chơng trình để ngời sử dụng nhập một số khác 0 rồi tính và in ra màn hình
tổng các nghịch đảo của các số này. Chơng trình kết thúc khi ngời sử dụng nhập số 0
đầu tiên (nghịch đảo của số n là 1/n)
8.10. Trong bài tập 7.6 chúng ta đã xét bài toán gửi tiết kiệm với số tiền ban đầu là a
(triệu đồng), lãi suất k% với chu kì tính lãi là c tháng (nghĩa là cứ sau c tháng thì lãi
suất đợc tính và đợc cộng vào số tiền gốc để tính lãi cho c tháng tiếp theo; trờng hopự c
bằng 1 là lãi suất hàng tháng) và viết chơng trình tính số tiền ngời đó rút đợc sau
khoảng thời gian t (tháng). Chúng ta xét bài toán ngợc nh sau:
a. Hãy viết chơng trình cho biết ngời đó phải gửi bao nhiêu tháng để thu đợc tổng
số tiền cả gốc và lãi không ít hơn b (triệu đồng)
b. Nhập chơng trình vào máy tính để chạy và lu tệp chơng trình với tên
BT8_10.pas
8.12. Viết chơng trình sử dụng câu lệnh lặp while ... do để tính tổng
n
S
1
...
3
1


2
1
1
++++=
với


n
1
, giá trị là sai số cho trớc và đợc nhập vào từ bàn phím.
8.13. Viết chơng trình trò chơi Thử vận may theo mô tả nh sau:
- Đầu tiên máy tính sinh ra một số ngẫu nhiên n để biểu diễn số lợt chơi (sử dụng
hàm random())
- ở mỗi lợt chơi máy tính sẽ sinh ra một số ngẫu nhiên. Trớc khi thông báo số này,
ngời chơi sẽ đoán đó là số chẵn (bằng cách nhập số 0) hay số lẻ (bằng cách nhập số 1)
- Kết thúc n lợt chơi, máy tính sẽ thông báo tổng số lần đoán đúng và tỉ lệ đoán
đúng của ngời chơi và thông báo về sự may mắn của ngời chơi. Nếu tỉ lệ đoán đúng là:
+ Từ 80% trở lên thì thông báo rất may mắn;
+ Từ 65% đến dới 80% thì thông báo may mắn;
1
+ Từ 50% đến dới 65% thì thông báo bình thờng;
+ Dới 50% thì thông báo không may mắn;
8.14. Hãy xem quy luật sinh sản của loài thỏ ở bài 7.14
a. Viết chơng trình cho biết sau khoảng thời gian là bao nhiêu tháng thì ta có một
đàn thỏ không ít hơn m cặp thỏ từ một cặp thỏ bố mẹ ở tháng đầu tiên. m là số nguyên
dơng nhập từ bàn phím nằm trong khoảng từ 1 đến 10000. Giả sử không tính đến các
nguyên nhân làm cho thỏ chết, nh già, yếu, bệnh tật hoặc bị con thú khác ăn thịt.
b. Nhập chơng trình vào máy tính và lu với tên tệp là BT8_14.pas. Hãy chạy ch-
ơng trình và cho biết kết quả với các dữ liệu thử m=500, 1000, 2000, 5000, 10000.
8.15. Sử dụng câu lệnh lặp while ... do, viết lại thuật toán và chơng trình để nhập số tự

nhiên đầu tiên n và tính tổng các ớc số thực sự của n.
8.16. Ước số chung lớn nhất của hai số nguyên dơng a và b, kí hiệu là UCLN(a,b), có
thể đợc tính bằng một trong hai thuật toán sau đây:
a. Thuật toán trừ liên tiếp: Xét hai số ban đầu a và b, ta lấy số lớn hơn trừ đi số
nhỏ hơn. Sau đó lại xét hai số là số nhỏ hơn và hiệu vừa tìm đợc... Tiếp tục quá trình đó
cho đến khi nhận đợc hai số bằng nhau, đó chính là UCLN(a,b).
INPUT: a, b là hai số nguyên dơng.
OUTPUT: UCLN(a, b)
B1: Nhập a, b>0
B2: Nếu a = b, chuyển tới bớc 5.
B3: Nếu a>b, gán a=a-b; Ngợc lại, gán b = b-a
B4: Quay lại bớc 2
B5: In ra a (a là UCLN(a,b))
B6: Kết thúc thuật toán.
b. Thuật toán chia liên tiếp: Xét hai số ban đầu a, b. Tính r là số d của phép chia a cho
b. Nếu số d r khác 0 thì xét cặp số a (bằng b), b (bằng r),... Kết thúc quá trình lặp (r=0),
b chính là UCLN(a,b)
INPUT: a, b là hai số nguyên dơng.
OUTPUT: UCLN(a, b)
B1: Nhập a, b>0
B2: gán r = a mod b
B3: Nếu r khác 0, gán a = b, gán b = r.
B4: In ra b (b chính là UCLN(a,b))
B5: Kết thúc thuật toán.
1/ Hãy kiểm tra lại hai thuật toán với cùng số bộ dữ liệu thử và cho biết trong hai
thuật toán nói trên, thuật toán nào cho kết quả nhanh hơn (tức là thực hiện với số lần lặp
ít hơn)
2
2/ Hãy viết chơng trình Pascal tính UCLN(a,b) bằng thuật toán em thích hoặc
thấy dễ hiểu hơn trong hai thuật toán nói trên và lu tệp chơng trình với tên BT8_16.pas

8.17. Mặc dù ngôn ngữ lập trình Pascal không có kiểu dữ liệu phân số, nhng ta vẫn có
cách để nhập phân số, in ra màn hình và thực hiện các phép tính trên phân số. Trong bài
tập này ta chỉ xét đến phép cộng phân số.
- Việc nhập một phân số a/b với b khác 0 đợc thực hiện bằng cách nhập riêng tử
số a và mẫu số b.
- Phân số a/b đợc in ra màn hình dới dạng a/b bằng lệnh:
write(a, / , b) hoặc lệnh writeln(a, / , b)
- Phép cộng hai phân số a/b và c/d (b,d khác 0) cho kết quả là phân số m/n, trong
đó m = ad + bc và n = bd. lu ý, phân số m/n có thể là phân số cha tối giản. Để tìm phân
số tối giản p/q của phân số m/n, ta chỉ việc chia tử số và mẫu số của nó cho ớc chung
lớn nhất của m và n (xem thuật toán tìm UCLN trong bài 8.16).
a. Hãy viết chơng trình Pascal làm các nhiệm vụ sau:
- Nhập từ bàn phím hai phân số a/b và c/d. Để đơn giản ta giả thiết a, b, c, d đều
nguyên dơng và việc nhập là đúng đắn, không cần kiểm tra bằng chơng trình.
- Tính phân số p/q = a/b + c/d, tối giản p/q và in p/q lên màn hình.
b. Nhập thử chơng trình trên vào máy tính và lu với tên BT8_17.pas. Chạy thử chơng
trình với dữ liệu là một số cặp phân số.
8.18. Ngời ta đã chứng minh rằng các tổng T
n
:
1
1
...
3
1
2
1
1
.................................
4

1
3
1
2
1
1
3
1
2
1
1
2
1
1
3
2
1
+
++++=
+++=
++=
+=
n
T
T
T
T
n
luôn tăng có thể lớn hơn một số bất kỳ, mặc dù chỉ cộng thêm một số rất nhỏ ở mỗi b-
ớc. Viết chơng trình nhập một số thực A và tìm số tự nhiên nhỏ nhất N sao cho

A
N
T
n
>++++=
1
...
3
1
2
1
1
Bài 9: Làm việc với dãy số (mảng)
9.2. Viết chơng trình để sử dụng biến mảng để tính giá trị trung bình của N số nguyên
đợc nhập vào từ bàn phím.
3
9.4. Điểm kiểm tra môn Tin học của n học sinh lớp 8A đợc khai báo nh là mảng a trong
bài tập 9.3. Để in ra màn hình điểm của n học sinh trong lớp, có hai cách:
- Cách 1: In ra một dãy điểm theo hàng, khi hết độ rộng màn hình thì tự động
xuống dòng.
- Cách 2: In ra thành một cột điểm, mỗi điểm in trên một dòng.
Hãy viết hai đoạn chơng trình tơng ứng với 2 cách thực hiện nói trên.
9.5. Điểm kiểm tra môn Tin học của n học sinh lớp 8B đợc biểu diễn bởi mảng a nh
trong mô tả bài 9.3. Các chỉ số của các phần tử trong mảng a đồng thời cũng là số thứ tự
của các học sinh trong danh sách lớp (thay cho tên học sinh). Để in ra màn hình số thứ
tự của các học sinh đạt điểm cao nhất lớp, bạn Thành đã viết đoạn chơng trình Pascal
sau đây:
max:=0;
for i:=1 to n do
if max<a[i] then

begin
max:=a[i];
writeln(STT cua HS co diem cao nhat la:, i);
end;
Tuy nhiên khi chạy thử chơng trình Thành thấy rằng đoạn chơng trình trên không
cho kết quả đúng. Em hãy giải thích tại sao và viết lại đoạn chơng trình đó cho đúng.
9.6. Kết hợp các kết quả trong bài 9.3, 9.4, 9.5 hãy viết chơng trình Pascal thực hiện các
nhiệm vụ sau đây:
a, Nhập vào từ bàn phím điểm kiểm tra môn Toán của n học sinh trong một lớp
(n<=50)
b. In ra màn hình số thứ tự của các học sinh đạt điểm cao nhất, với quy ớc STT
của dãy điểm đã nhập chính là số thứ tự của học sinh (thay cho tên)
c. In ra màn hình số lợng và tỷ lệ học sinh đạt điểm giỏi (>=8.0)
d. In ra màn hình số lợng và tỷ lệ học sinh đạt điểm dới 5.
9.8. Bạn Phan dùng 3 biến mảng, lần lợt biểu diễn cớc phí điện thoại, điện, dịch vụ
Internet của gia đình mình trong 12 tháng năm vừa qua.
a/ Viết chơng trình Pascal thực hiện các nhiệm vụ sau đây:
- Nhập số tiền chi cho 3 dịch vụ từng tháng từ bàn phím.
- Tính và in ra màn hình tổng số tiền mà gia đình bạn Phan phải trả cho các dịch
vụ này trong năm vừa qua.
- Hãy cho biết dịch vụ nào có tổng chi lớn nhất?
- Cho biết trung bình mỗi tháng gia đình Phan phải trả bao nhiêu cho các dịch vụ
nói trên.
4
b. Nhập chơng trình vào máy tính để chạy thử, lu chơng trình lên đĩa với tên tệp
BT9_8.pas.
9.9. Cho một dãy số gồm n số thực và một số thực x. Viết chơng trình nhập n số thực đó
và đếm xem có bao nhiêu số trong dãy không lớn hơn x.
9.10. Nhập vào từ bàn phím một dãy số nguyên không âm. Hãy in ra màn hình chỉ số i
nhỏ nhất sao cho tổng các phần tử từ 1 đến i lớn hơn 100.

9.11. Viết chơng trình Pascal tính giá trị của đa thức:
P(x) = a
0
+ a
1
x + a
2
x
2
+...+ a
n
x
n
có các hệ số cho trong một mảng số thực. Bậc n của đa thức và mảng hệ số a
0
, a
1
, a
2
, ...,
a
n
đợc nhập từ bàn phím.
Gợi ý: Sử dụng công thức sau (gọi là công thức Hooc nơ):
P(x) = a
0
+ x(a
1
+ x(a
2

+...+ x(a
n-1
+a
n
x)...)
9.12. Đoạn chơng trình đựơc dùng để sắp xếp lại dãy số đợc ghi trong mảng n phần tử,
theo thứ tự tăng dần:
for i:=1 to n do
for j:=i to n do
if a[i]>a[j] then
begin
tg:=a[i]; a[i]:=a[j]; a[j]:=tg;
end;
Hãy kiểm tra việc thực hiện chơng trình trên với một số bộ dữ liệu cụ thể.
9.13. Viết chơng trình chèn thêm một số nguyên vào một dãy số nguyên đã đợc sắp xếp
theo thứ tự tăng dần sao cho dãy số bảo toàn đợc thứ tự sắp xếp của nó. Dãy số, số các
số hạng và số nguyên cần chèn đợc nhập từ bàn phím.
9.14. Cho một dãy n số đợc nhập vào đầu 1 mảng gồm 100 phần tử (n<100). Hãy viết
đoạn chơng trình nhập dãy số vào mảng và các đoạn chơng trình thực hiện các công
việc tơng ứng sau:
- Nhập một số và thêm nó vào vị trí cuối của dãy.
- Nhập một số và chèn nó vào vị trí đầu tiên của dãy số (đẩy các phần tử về sau
một vị trí)
- Nhập một số và chèn nó vào vị trí k sao cho dãy con từ 1 đến k là dãy số không
giảm.
9.15.
a, Hãy viết chơng trình Pascal để thực hiện nhiệm vụ sau đây:
- Nhập vào từ bàn phím một dãy không quá 30 số nguyên
5

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

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