PHÒNG GD&ĐT HOÀI ÂN KỲ THI HSG MÔN TIN HỌC LỚP 9 NĂM HỌC 2010-2011 Thời gian: 150 phút (không kể thời gian giao đề) YÊU CẦU CHUNG Mỗi thí sinh lập một thư mục trên máy như sau: D:\THIHSG_L9\(số báo danh của thí sinh) để lưu các file bài làm. (Bài 1 lưu thành file Bai1.pas, Bài 2 lưu Bai2.pas, Bài 3 lưu Bai3.pas). Em hãy lập trình bằng ngôn ngữ Pascal để giải các bài toán sau: Bài 1: (6,0 điểm) Viết chương trình nhập từ bàn phím vào số nguyên dương n ( ) 100n ≤ , số nguyên dương k và dãy A gồm n số nguyên dương (a1, a2, ,an) và thực hiện các công việc sau: a) Tính tổng các số chẵn có trong dãy. b) Tính tổng các phần tử có giá trị bằng k. c) In ra màn hình dãy số A, tổng các số chẵn trong dãy, tổng các số trong dãy có giá trị bằng k. Bài 2 :(6,0 điểm) Một số k được gọi là số chính phương khi và chỉ khi tồn tại một số nguyên x sao cho x 2 = k. Viết chương trình thực hiện các yêu cầu sau : a. Nhập vào 2 số nguyên dương n, m lớn hơn hoặc bằng 2. Chương trình có kiểm tra giá trị nhập vào. b. Nhập vào một mảng hai chiều A các số nguyên dương gồm n hàng và m cột. c. Tìm tất cả các số chính phương trong mảng ở câu b và lưu vào một mảng một chiều. d. In mảng một chiều chứa các số chính phương của mảng hai chiều A vừa tìm được ở câu c. ra màn hình. Bài 3:(8,0 điểm) Cho hình chữ nhật ABCD có chiều dài AB là a (cm), chiều rộng AD là b (cm) với a, b là các số nguyên dương không vượt quá 10000. Một điểm M trên đoạn BC, một điểm N trên đoạn CD sao cho độ dài (tính bằng cm) các đoạn BM, CN bằng nhau và là số nguyên không âm. Yêu cầu: 1. Biết độ dài BM = x, tính diện tích hình chữ nhật ABCD và diện tích tam giác MCN. 2.Tìm giá trị lớn nhất và giá trị nhỏ nhất của diện tích tam giác AMN khi M, N thay đổi. Dữ liệu vào: Dữ liệu của bài toán cho trong tệp tin DTICH.INP (tệp tin DTICH.INP đã có sẵn trên thư mục chứa Turbo Pascan, thí sinh không cần tạo) gồm ba số a, b, x (x ≤ b ≤ a, x là độ dài BM trong yêu cầu 1 và là số nguyên dương) được ghi trên cùng một dòng theo đúng thứ tự trên, hai số liên tiếp cách nhau một khoảng trắng. Dữ liệu ra: Kết quả ghi ra file DTICH.OUT trên 5 dòng: - Dòng đầu là ba số a, b và x. - Dòng thứ hai là diện tích hình chữ nhật ABCD. A B D C M N - Dòng thứ ba là diện tích tam giác MCN - Dòng thứ tư là giá trị lớn nhất của diện tích tam giác AMN - Dòng thứ năm là giá trị nhỏ nhất của diện tích tam giác AMN (Các giá trị diện tích được ghi dưới dạng thập phân với 1 chữ số sau dấu phẩy). Ví dụ: DTICH.INP Kết quả trên màn hình (hoặc file DTICH.OUT) 10 6 2 10 6 2 60.0 4.0 30.0 17.5 Lưu ý: Nếu không nhập được dữ liệu vào từ file, thí sinh có thể nhập dữ liệu vào từ bàn phím. Nếu không ghi được dữ liệu ra vào file DTICH.OUT thí sinh có thể xuất kết quả ra màn hình (sẽ bị trừ điểm). Đáp án Chương trình mẫu (bai1.pas) uses crt; var n,k,tongchan,tongk,i:integer; a:array[1 20] of integer; Begin clrscr; Repeat Write('Nhap n=');Readln(n); Write('Nhap k=');Readln(k); Until (n>0) and (k>0); tongchan:=0; tongk:=0; for i:=1 to n do Begin write('a',i,'=');readln(a[i]); if (a[i] mod 2 = 0) then tongchan:=tongchan+a[i]; if (a[i]=k) then tongk:=tongk+a[i]; end; write('Day A:'); for i:=1 to n do if i<n then write(a[i],', ') else write(a[i]); writeln; writeln('Tong chan la ',tongchan); writeln('Tong cac phan tu có gia tri bang ’,k,’ la ',tongk); readln; End. Chương trình mẫu (Bai2.pas). uses Crt; Var n,m,i,j,k:integer; a:array[1 10,1 10] of integer; b:array[1 100] of integer; Begin clrscr; repeat Write('Nhap n=');readln(n); Write('Nhap m=');readln(m); until (n>1) and (m>1); k:=0; for i:=1 to n do for j:=1 to m do Begin write('Nhap a[',i,',',j,']=');readln(a[i,j]); if sqrt(a[i,j])=int(sqrt(a[i,j])) then begin k:=k+1; b[k]:=a[i,j]; end; End; writeln('Cac so chinh phuong cua mang da cho la:'); for i:=1 to k do write(b[i]:4); readln; End. Chương trình mẫu. 1. Dữ liệu vào được nhập từ file dtich.inp a/ Dữ liệu ra được ghi vào file dtich.out (Bai3_1a.pas) var a,b,x:integer; min, max,s,s1,s2:real; f,g: text; begin Assign(f,'dtich.inp'); reset(f); readln(f,a,b,x); close(f); if (a<0) or (b<0) or (a<b) or (b<x) then Begin write(‘File du lieu nhap sai’); Readln ; Halt ; End ; Assign(g,’dtich.out’); Rewrite(g); writeln(g,a:4,b:4,x:4); s1:=a*b; s2:=x*(b-x)/2; min:=s1/2; max:=s1/2; for x:=1 to b do begin s:=s1 - (a*x + x*(b-x) + b*(a-x))/2; if min>s then min:=s; if max<s then max:=s; end; writeln(g,s1:12:1);writeln(g,s2:12:1); writeln(g,max:12:1);writeln(g,min:12:1); writeln(a:4,b:4,x:4); writeln(s1:12:1);writeln(s2:12:1); writeln(max:12:1);writeln(min:12:1); writeln(‘Ngoai ra du lieu duoc luu trong file dtich.out’) readln; end. b/ Dữ liệu ra được in ra màn hình (Bai3_1b.pas) var a,b,x:integer; min, max,s,s1,s2:real; f,g: text; begin Assign(f,'dientich.inp'); reset(f); readln(f,a,b,x); close(f); Assign(g,’dientich.out’); Rewrite(g); writeln(a,’ ‘,b,’ ‘,x); s1:=a*b; s2:=x*(b-x)/2; min:=s1/2; max:=s1/2; for x:=1 to b do begin s:=s1 - (a*x + x*(b-x) + b*(a-x))/2; if min>s then min:=s; if max<s then max:=s; end; writeln(s1:12:1);writeln(s2:12:1); writeln(max:12:1);writeln(min:12:1); readln; end. 2. Dữ liệu vào được nhập từ bàn phím (Bai3_2.pas). Uses Crt; var a,b,x:integer; min, max,s,s1,s2:real; begin clrscr; Repeat write(‘Nhap a:’); readln(a); write(‘Nhap b:’); readln(b); write(‘Nhap a:’); readln(x); clrscr; until (x<=b) and (b<=a); writeln(a:4,b:4,x:4); s1:=a*b; s2:=x*(b-x)/2; min:=s1/2; max:=s1/2; for x:=1 to b do begin s:=s1 - (a*x + x*(b-x) + b*(a-x))/2; if min>s then min:=s; if max<s then max:=s; end; writeln(s1:12:1);writeln(s2:12:1); writeln(max:12:1);writeln(min:12:1); readln; end. TEST Kết quả trên màn hình (hoặc file DTICH.OUT) DTICH1.INP 10 6 2 10 6 2 60.0 4.0 30.0 17.5 DTICH2.INP 20 10 5 20 10 5 200.0 12.5 100.0 50.0 DTICH3.INP 30 15 8 30 15 8 450.0 28.0 225.0 112.5 . GD&ĐT HOÀI ÂN KỲ THI HSG MÔN TIN HỌC LỚP 9 NĂM HỌC 2010-2011 Thời gian: 150 phút (không kể thời gian giao đề) YÊU CẦU CHUNG Mỗi thí sinh lập một thư mục trên máy như sau: D:THIHSG_L9(số báo danh. diện tích tam giác AMN khi M, N thay đổi. Dữ liệu vào: Dữ liệu của bài toán cho trong tệp tin DTICH.INP (tệp tin DTICH.INP đã có sẵn trên thư mục chứa Turbo Pascan, thí sinh không cần tạo) gồm ba. diện tích tam giác MCN - Dòng thứ tư là giá trị lớn nhất của diện tích tam giác AMN - Dòng thứ năm là giá trị nhỏ nhất của diện tích tam giác AMN (Các giá trị diện tích được ghi dưới dạng thập