1. Trang chủ
  2. » Thể loại khác

MỘT SỐ BÀI TẬP PASCAL DÀNH CHO HỌC SINH GIỎI TIN 8

74 300 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 74
Dung lượng 804,77 KB

Nội dung

MỘT SỐ BÀI TẬP PASCAL DÀNH CHO HỌC SINH GIỎI TIN I Bài tập số phương (biến đơn): Cho số nguyên n, kiểm tra n có phải số phương khơng? a Ý tưởng: Dựa định nghĩa số phương: bình phương số tự nhiên - Ta có: = 0.0, , , , , - Nhận xét: Số phương số có phần thập phân bậc - Như vậy, để viết chương trình ta sử dụng hàm sqrt() để lấy bậc 2, hàm frac () để lấy phần thập phân b Chương trình tham khảo: Program CP; Var n:longint; Begin Write (‘nhap n:’); Readln (n); If (frac(sqrt(n))=0) and (n>=0) then write (n, ‘la so CP’) else write (n, ‘ko la so CP’); Readldn End In số phương nhỏ 100 a Ý tưởng: Để kiểm tra số phương nhỏ 100 ta kiểm tra số từ đến 99 có phải số phương khơng, câu lệnh for … to … b Chương trình tham khảo: Program CP; Var i:longint; Begin For i:=0 to 99 If frac(sqrt(i))=0 then write (i,’ ‘); Readldn End Nhập vào số nguyên n In số phương nhỏ n a Ý tưởng: - Để tìm số phương nhỏ n kiểm tra số từ đến n có phải số phương khơng, câu lệnh for … to … b Chương trình tham khảo: Program CP; Var i:longint; Begin For i:= to n If frac(sqrt(i))=0 then write (i); Readldn End In số phương có hai chữ số a Ý tưởng: Để kiểm tra số phương có hai chữ số kiểm tra số từ 10 đến 99 có phải số phương không, câu lệnh for … to … b Chương trình tham khảo: Program CP; Var i:longint; Begin For i:=10 to 100 If frac(sqrt(i))=0 then write (i, ‘ ‘); Readldn End In số phương số chẵn nhỏ 100 a Ý tưởng: - Ví dụ: 4,16,36,… - Để giải tốn ta cần xác định điều kiện phù hợp với thuật tốn: + thuật tốn số phương + Kiểm tra số phương có phải số chẵn khơng Nếu số chẵn in - Để tìm số phương nhỏ 100 kiểm tra số từ đến 99 có phải số phương khơng, câu lệnh for … to … - Kiểm tra số phương số chẵn cách kiểm tra số có chia hết cho khơng Nếu số chia hết cho số phương chẵn, in b Chương trình tham khảo: Program CP; Var i:longint; Begin For i:= to 99 If (frac(sqrt(i))=0) and (i mod =0 ) then write (i,’ ‘); Readldn End Nhập vào số nguyên a,b (a 4 => 1 1 1 => 1 1 3 3 => khong co phan tu la so chinh phương => khong co phan tu la so chinh phuong - Nhập dãy số nguyên a gồm n phần tử - Kiểm tra phần tử dãy a Nếu phần tử số phương in phần tử b Chương trình tham khảo: Var a:array[1 50] of longint; Dem,n,i: longint; Begin Read (n); For i:=1 to n Read(a[i],’ ‘); Dem:=0; For i:=1 to n If frac(sqrt(a[i]))=0 then begin write (a[i],’ ‘); dem:=dem+1; end; if dem=0 then write (‘khong co phan tu la so chinh phuong’); Readln End Viết chương trình nhập vào dãy số nguyên a gồm n phần tử In vị trí phần tử số phương a Ý tưởng: - Lấy ví dụ: => 5 => 4 => 4 4 => 3 3 => khong co phan tu la so phương => khong co phan tu la so chinh phuong - Nhập dãy số nguyên a gồm n phần tử - Kiểm tra phần tử dãy a Nếu phần tử số phương in vị trí phần tử b Chương trình tham khảo: Var a:array[1 50] of longint; Dem,n,i: longint; Begin Read (n); Write (‘nhap mang a: ‘); For i:=1 to n Read(a[i],’ ‘); Dem:=0; For i:=1 to n If frac(sqrt(i)) = then Begin write (i,’ ‘); dem :=dem+1; end; if dem = then write (‘ko co phan tu la so chinh phuong’); Readln End Viết chương trình nhập vào dãy số nguyên a gồm n phần tử In phần tử số phương vị trí a Ý tưởng: - Lấy ví dụ: - => vi tri 2, vi tri - 5 => vi tri - => vi tri 3, vi tri - 4 4 => vi tri 1, vi tri 2, vi tri 3, vi tri 4, vi tri - 3 3 => khong co phan tu la so phương - => khong co phan tu la so chinh phuong - Nhập dãy số nguyên a gồm n phần tử - Kiểm tra phần tử dãy a Nếu phần tử số phương in phần tử vị trí b Chương trình tham khảo: Var a:array[1 50] of longint; Dem,n,i: longint; Begin Read (n); For i:=1 to n Read(a[i],’ ‘); Dem:=0; For i:=1 to n If frac(sqrt(i)) = then Begin writeln (a[i],’vi tri ‘,i); dem:=dem+1; end; if dem = then write (‘khong co phan tu la so chinh phuong); Readln End Viết chương trình nhập vào dãy số nguyên a gồm n phần tử In phần tử phương lớn dãy a Ý tưởng: - Lấy ví dụ: => 9 => 4 4 => => khong co so chinh phuong - Tìm kiếm số phương - So sánh phần tử số phương mảng, tìm số lớn cách lấy phần tử max 0, so sánh max với phần tử phương cịn lại, phần tử lớn max gán max phần tử In kết max b Chương trình tham khảo: Var a:array [1 50] of longint; Max,i,n:longint; Begin Read (n); For i := to n read (n); Max:=0; For i:=1 to n If frac(sqrt(a[i]))=0 and (a[i] > max) then max:=a[i]; If frac(sqrt(max)) = then Write (max); Readln End Viết chương trình nhập vào dãy số nguyên a gồm n phần tử In phần tử số phương nhỏ dãy a Ý tưởng: - Lấy ví dụ: 7 => 4 => 4 4 => => khong co so chinh phuong - So sánh phần tử mảng, tìm phần tử nhỏ cách lấy phần tử thứ min, so sánh với phần tử lại, phần tử nhỏ gán phần tử Kiểm tra số phương in kết b Chương trình tham khảo: Var a:array [1 50] of longint; Min,i,n:longint; Begin Read (n); For i := to n read (n); Min:=a[1]; For i:=1 to n If frac(sqrt(a[i]))=0 and (a[i] < min) then min:=a[i]; If frac(sqrt(min)) = then Write (min); Readln End Viết chương trình nhập vào dãy số nguyên a gồm n phần tử In phần tử số phương lớn dãy vị trí a Ý tưởng: - Lấy ví dụ: => vi tri 5 => vi tri 4 4 => => khong co so chinh phuong - Tìm kiếm số phương - So sánh phần tử số phương mảng, tìm số lớn cách lấy phần tử max 0, so sánh max với phần tử phương cịn lại, phần tử lớn max gán max phần tử In kết max vị trí b Chương trình tham khảo: 22222 => vi tri 1; vi tri 2; vi tri 3; vi tri 4; vi tri 11111 => khong co phan tu la so chan 13579 => khong co phan tu la so chan 20 Nhập dãy số nguyên a gồm n phần tử 21 Kiểm tra phần tử dãy a Nếu phần tử số chẵn in phần tử vị trí d Chương trình tham khảo: Var a:array[1 50] of longint; Dem,n,i: longint; Begin Read (n); For i:=1 to n Read(a[i],’ ‘); Dem:=0; For i:=1 to n If a[i] mod = then Begin writeln (a[i],’vi tri ‘,i); dem:=dem+1; end; if dem = then write (‘khong co phan tu chan); Readln End 22 Viết chương trình nhập vào dãy số nguyên a gồm n phần tử In tổng phần tử dãy a Ý tưởng: 23 Lấy ví dụ: 0 0 -1 -2 -3 -3 -1 -2 -3 0 0 24 Nhập dãy số nguyên a gồm n phần tử 25 Tính tổng phần tử có dãy b Chương trình tham khảo: -5 0 -6 -1 Var a:array[1 50] of longint; n,i,s: longint; Begin Read (n); For i:=1 to n Read(a[i],’ ‘); S:=0; For i:=1 to n S:=s+a[i]; Write (s); Readln End 26 Viết chương trình nhập vào dãy số nguyên a gồm n phần tử Đếm số phần tử chẵn có dãy a Ý tưởng: 27 Lấy ví dụ: 12345 => 13579 =>0 00000 =>5 24682 => 11111 => 22222 => 28 Nhập dãy số nguyên a gồm n phần tử 29 Tìm phần tử chẵn 30 Đếm số phần tử chẵn có dãy b Chương trình tham khảo: Var a:array[1 50] of longint; N,i,dem: longint; Begin Read (n); For i:=1 to n Read(a[i],’ ‘); Dem:=0; For i:=1 to n If a[i] mod = then dem:=dem+1; Write (dem); Readln End 31 Viết chương trình nhập vào dãy số nguyên a gồm n phần tử In phần tử lớn dãy c Ý tưởng: 32 Lấy ví dụ: 23756 => 11111 => 33 So sánh phần tử mảng, tìm số lớn cách lấy phần tử thứ max, so sánh max với phần tử lại, phần tử lớn max gán max phần tử In kết max d Chương trình tham khảo: Var a:array [1 50] of longint; Max,i,n:longint; Begin Read (n); For I := to n read (n); Max:=a[1]; For i:=2 to n If a[i] > max then max:=a[i]; Write (max); Readln End 34 Viết chương trình nhập vào dãy số nguyên a gồm n phần tử In phần tử nhỏ dãy c Ý tưởng: 35 Lấy ví dụ: 23756 => 11111 => khong co phan tu nho nhat 23982 => 36 So sánh phần tử mảng, tìm phần tử nhỏ cách lấy phần tử thứ min, so sánh với phần tử cịn lại, phần tử nhỏ gán phần tử In kết d Chương trình tham khảo: Var a:array [1 50] of longint; Min,i,n,dem:longint; Begin Read (n); For i:= to n read (n); Min:=a[1]; dem:=0; For i:=2 to n Begin If a[i] < then min:=a[i]; If a[i] = then dem :=dem+1; end; if dem= n then write (‘khong co phan tu nho nhat’) else write (min); Readln End 37 Viết chương trình nhập vào dãy số nguyên a gồm n phần tử In phần tử lớn dãy vị trí e Ý tưởng: 38 Lấy ví dụ: 23756 => 11111 => 39 So sánh phần tử mảng, tìm số lớn cách lấy phần tử thứ max, so sánh max với phần tử cịn lại, phần tử lớn max gán max phần tử In kết max vị trí f Chương trình tham khảo: Var a:array [1 50] of longint; Max,i,n:longint; Begin Read (n); For I := to n read (n); Max:=a[1]; For i:=2 to n If a[i] > max then max:=a[i]; For i:=1 to n If a[i] = max then write (a[i], ‘vi tri’, i); Readln End 40 Viết chương trình nhập vào dãy số nguyên a gồm n phần tử In vị trí phần tử chẵn lớn c Ý tưởng: 41 Lấy ví dụ: 87324 => 11111 => khong co phan tu chan 88888 => 22388 => 00000 => 42 Tìm phần tử chẵn 43 So sánh phần tử chẵn mảng, tìm phần tử chẵn lớn cách lấy phần tử max 0, so sánh max với phần tử chẵn mảng, phần tử chẵn lớn max gán max phần tử In kết max d Chương trình tham khảo: Var a:array [1 50] of longint; Max,i,n:longint; Begin Read (n); For I := to n read (n); Max:=a[1]; For i:=2 to n If a[i] > max then max:=a[i]; Write (max); Readln End 44 Viết chương trình nhập vào dãy số nguyên a gồm n phần tử Sắp xếp mảng theo thứ tự chẵn hàng, lẻ hàng a Ý tưởng: 45 Lấy ví dụ: => 357 1 1 1 => 1 1 1 2 2 2 => 2 2 2 3 3 => 3 3 46 Nhập vào phần tử mảng 47 Kiểm tra phần tử mảng phần tử chẵn in Sau xuống dịng, trở vị trí ban đầu, kiểm tra phần tử mảng, phần tử số lẻ in b Chương trình tham khảo: Var a:array [1 50] of longint; I,n:longint; Begin Read (n); For i:=1 to n Read (a[i]); For i:=1 to n If a[i] mod = then write (a[i],’ ‘); writeln; For i:=1 to n If i mod then write (a[i],’ ‘); Readln End 48 Viết chương trình nhập vào dãy số nguyên a gồm n phần tử Sắp xếp mảng theo thứ tự tăng dần c Ý tưởng: 49 Lấy ví dụ: 93742 => 74833 => 3 11111 => 1 1 00000 => 0 0 d Chương trình tham khảo: Var a:array [1 50] of longint; Max,i,n,tg:longint; Begin Read (n); For i := to n - read (n); For i:=i+1 to n For j:=i-1 to n If a[j] < a[i] then begin tg:=a[i]; a[i]:=a[j]; a[j] :=tg; end; for i:=1 to n write (a[i],’ ‘); Readln End 50 Viết chương trình nhập vào dãy số nguyên a gồm n phần tử Sắp xếp mảng theo thứ tự chẵn hàng, lẻ hàng c Ý tưởng: 51 Lấy ví dụ: => 357 1 1 1 => 1 1 1 2 2 2 => 2 2 2 3 3 => 3 3 52 Nhập vào phần tử mảng 53 Kiểm tra phần tử mảng phần tử chẵn in Sau xuống dịng, trở vị trí ban đầu, kiểm tra phần tử mảng, phần tử số lẻ in d Chương trình tham khảo: Var a:array [1 50] of longint; I,n:longint; Begin Read (n); For i:=1 to n Read (a[i]); For i:=1 to n If a[i] mod = then write (a[i],’ ‘); writeln; For i:=1 to n If i mod then write (a[i],’ ‘); Readln End 54 Viết chương trình nhập vào dãy số nguyên a gồm n phần tử In phần tử có giá trị khác nhau, phần tử in lần a Ý tưởng: 55 Lấy ví dụ: => 1 2 3 => 3 2 => 1 1 1 => 56 Nhập dãy số nguyên a gồm n phần tử 57 Đếm phần tử xuất lần dãy b Chương trình tham khảo: Var a:array[1 50] of longint; I,n,dem,j: longint; Begin Read (n); For i:1 to n read (a[i]); For i:1 to n-1 begin Dem:=1; For j:= i+1 to n If a[i] = a[j] then dem:=dem+1; If dem = then write (a[i],’ ‘); End; Readln; Readln; End 58 Viết chương trình nhập vào dãy số nguyên a gồm n phần tử In phần tử xuất lần mảng a Ý tưởng: 59 Lấy ví dụ: => 1 2 3 => khong co phan tu xuat hien lan 2 => 1 1 1 => khong co phan tu xuat hien lan 60 Nhập dãy số nguyên a gồm n phần tử 61 Đếm phần tử xuất lần dãy cách Sử dụng biến đếm, gán đếm ban đầu So sánh phần tử mảng với Nếu phần tử biến đếm tăng lên đơn vị cuối xét biến đếm biến đếm =0 phần tử xuất lần in kết b Chương trình tham khảo: Var a:array[1 50] of longint; I,n,dem,j: longint; Begin Read (n); For i:=1 to n read (a[i]); For i:=1 to n-1 begin Dem:=0; For j:= i to n If a[i] = a[j] then dem:=dem+1; If dem = then write (a[i],’ ‘); End; Readln; Readln; End 62 Viết chương trình nhập vào dãy số nguyên a gồm n phần tử , in phần tử n số lẻ khác mảng a Ý tưởng: 63 Lấy ví dụ: => 1 2 3 => 1 1 1 => => khơng có phần tử lẻ 2 2 2 => khơng có số lẻ 0 0 0 => số lẻ 64 Nhập dãy số nguyên a gồm n phần tử 65 Kiểm tra phần tử lẻ mảng 66 So sánh, đếm in phần tử lẻ khác mảng b Chương trình tham khảo: Var a:array[1 50] of longint; i,n,dem,j: longint; Begin Read (n); For i:=1 to n read (a[i]); For i:=1 to n If a[i] mod then Begin Dem:=1; For j:=i+1 to n If a[i] = a[j] then dem:=dem+1; If (dem=1) and (a[i] a[j]) then write (a[i],’ ‘); End; If a[i] mod = then write (‘khong co phan tu le’); Readln End 67 Dãy tăng dần (giảm dần) có nhiều phần tử a Ý tưởng: - Lấy ví dụ: -> - Xác định vị trí đầu, cuối dãy tăng dần có nhiều phần tử - Đếm số dãy tăng dần dài b Chương trình tham khảo: Var a:array [1 50] of longint; N,I,j,d,m:longint; Begin Read (n); For i:=1 to n read (a[i]); M:=0; I:=0; Repeat d:=1; I:=i+1; While (a[i] m then m:=d; Until i=n; Write (m); I:=0; Repeat d:=1; I:=i+1; While (a[i] s=17 - Xác định vị trí đầu, cuối dãy tăng dần có nhiều phần tử - Đếm số dãy tăng dần dài - Tính in tổng b Chương trình tham khảo: Var a:array [1 50] of longint; N,I,j,d,m,s:longint; Begin Read (n); For i:=1 to n read (a[i]); M:=0; I:=0; Repeat d:=1; I:=i+1; S:=a[i]; While (a[i] m then m:=d; Until i=n; Write (m); I:=0; Repeat d:=1; I:=i+1; While (a[i] s=10 - Xác định vị trí đầu, cuối dãy tăng dần có nhiều phần tử - Đếm số dãy tăng dần dài - Tính so sánh tổng tổng dãy bé in dãy b Chương trình tham khảo: Var a:array [1 50] of longint; N,I,j,d,m,s,ms:longint; Begin Read (n); For i:=1 to n read (a[i]); M:=0; I:=0; Repeat d:=1; I:=i+1; S:=a[i]; While (a[i] m then m:=d; Until i=n; Write (m); I:=0; Repeat d:=1; I:=i+1; While (a[i] - Kiểm tra phần tử dãy với số k, số k nhỏ số chèn số k vào vị trí đầu, số k lớn số cuối chèn số k vào sau vị trí cuối, số k nằm khoảng kiểm tra só k với số dãy xem số k nằm vị trí dãy để dãy tăng In kết b Chương trình tham khảo: Var a:array[1 50] of longint; I,j,k,n: longint; Begin Read (n);read (k); For i:=1 to n read (a[i]); If k a[n] then a[n+1]:=k; If (k>a[1]) and (ka[j]) j:=j+1; For i:=n+1 downto j+1 A[i]:=a[i-1]; A[j]:=k; End; For i:=1 to n+1 Write (a[i],’ ‘) Readln; Readln; End

Ngày đăng: 07/08/2020, 13:14

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w