Pascal

Bài 1. Lệnh lặp While

Câu hỏi, ví dụ, bài tập

Câu 1: a) Lập trình tính tích của 10 số tự nhiên đầu tiên.

b) Lập trình tính tổng của 1000 số tự nhiên đầu tiên.

Trả lời

Câu 2: Lập trình tính tổng:

\[A = 1 + \frac{1}{2} + \frac{1}{3} + … + \frac{1}{n}\]

ở đây n là số tự nhiên được nhập từ bàn phím.

Trả lời

Câu 3: Dùng vòng While để tính số p theo công thức:

\[\frac{\pi }{4} = 1 – \frac{1}{3} + \frac{1}{5} – \frac{1}{7} + … + {\left( { – 1} \right)^N}\frac{1}{{\left( {2N + 1} \right)}}\]

với độ chính xác e theo yêu cầu biết rằng số ((\pi)) sẽ đạt được khi N đủ lớn để:

\[\frac{4}{{2N + 1}} < \varepsilon \]

Trả lời

Câu 4: Tính hàm lũy thừa ((a^n)) ở đây a thực và n tự nhiên được nhập vào từ bàn phím.

Trả lời

Câu 5: Có sẵn một dãy số. Hãy viết chương trình nhập một số x rồi tìm xem có bao nhiêu phần tử trong dãy >x hay không.

Trả lời

Câu 6: Viết chương trình nhập một dãy số tối đa 100 số, sau đó in ra màn hình các số khác nhau.

Trả lời

Câu 7: Viết chương trình nhập một dãy số tối đa 100 số, sau đó sắp xếp lại dãy theo thứ tự tăng dần.

Trả lời

Câu 8: Viết chương trình nhập tối đa 100 số, và kiểm tra xem dãy đó có lập thành một cấp số cộng hay không?

Trả lời

Câu 9: Viết chương trình nhập một dãy số tối đa 100 số, sau đó xét xem dãy số này có đối xứng hay không?

Trả lời

Câu 10: Viết chương trình nhập Họ, tên, năm sinh trong một danh sách có tối đa 100 người, sau đó xếp lại thứ tự danh sách này theo tuổi.

Trả lời

Câu 11: Viết chương trình nhập số tự nhiên n và in ra số Fibonaci thứ n.

Trả lời

Câu 12: Dãy số tự nhiên ((A_n)) thoả mãn các điều kiện sau:

((A_1=A_2=A_3=A_4=1))

((A_n = A_{n-1} + A_{n-3}))

Viết chương trình tính ((A_n)) với n cho trước. (n>=5)

Trả lời

Câu 13: Viết chương trình nhập số thực A và tìm ra số tự nhiên nhỏ nhất N sao cho

((1+ \frac{1}{2} +\frac{1}{3} + … + \frac{1}{N} >A))

Trả lời

Câu 14: Dãy số an được định nghĩa như sau:

((a_1 = 1))

((a_2 = 1))

……….

((a_n = a_{n-1} + 1)) nếu ((n)) lẻ và ((a_n = a_{n-1} + a_{n-2} + … + a_1)) nếu ((n)) chẵn.

Tính ((a_n)) với ((n)) nhập từ bàn phím.

Trả lời

Câu 15: Cho dãy số được nhập từ bàn phím. Hãy chỉ ra một dãy con liên tục đơn điệu tăng có độ dài lớn nhất. Chương trình phải in ra được dãy con đó.

Trả lời

Câu 16: Cho trước số tự nhiên N. Viết chương trình lập một mảng số bao gồm các chữ số thập phân của N. Ví dụ cho N=23654 thì ta có mảng sau: a[0]=4, a[1]=5, a[2]=6, a[3]=3, a[4]=2.

Trả lời

Câu 17: Cho trước số tự nhiên N. Viết chương trình lập một mảng số bao gồm các chữ số trong biểu diễn nhị phân của N. Ví dụ cho N=5 tức là 101 thì ta có mảng sau: a[0]=1, a[1]=0, a[2]=1.

Trả lời

Câu 18: Giả sử đã có dãy số ((a_1, a_2, …, a_n)) là đơn điệu tăng.

Em hãy dựa vào đoạn mô phỏng lập trình sau để viết chương trình Pascal hoàn chỉnh.


		Readln(c)
		i=1, j=n
		if c < ai or c > aj then Kết thúc chương trình
		while i<j do
		   	begin
		 		 k = (i+j) div 2
				 if c< ak then j = k else i =k
		 	end
		if ai = c then Thông báo tìm thấy
		             else Thông báo không tìm thấy
		
		

So sánh kết quả của chương trình này với các chương trình tìm kiếm phần tử trong dãy mà em đã làm trước kia.

Trả lời

Câu 19: Cho số tự nhiên N. Hãy tìm số Fibonaci lớn nhất không vượt quá N.

Trả lời

Câu 20: Cho số tự nhiên N. Hãy tìm một biểu diễn (duy nhất ??!!) của N thành tổng các số Fibonaci.

Trả lời

Câu 21: Cho một mảng số nhị phân (tức là toàn số 0 hoặc 1).

Cho trước chỉ số k, hãy tìm khoảng (i,j) lớn nhất bao hàm k thỏa mãn: các giá trị của dãy trong khoảng này là giống nhau.

Ví dụ cho dãy ban đầu 110000101010. Với k=4 ta có đáp số là khoảng (3,6) bao gồm các số 0.

Trả lời

Câu 22: Cho một bảng số nhị phân kích thước nxm (các phần tử của bảng là 0 hoặc 1). Cho trước một phần tử của bảng (i,j). Hãy tìm ra một khoảng hình chữ nhật cực đại chứa phần tử (i,j) và chứa các phần tử giống như (i,j).

Trả lời