Sử dụng ngôn ngữ lập trình Turbo Pascal để lập trình giải các bài toán sau: Câu 1 3.0đ: Chữ số: CHUSO.PAS Viết chương trình nhập vào một số tự nhiên n n< 1000 và xác định: - n có bao nhi[r]
(1)PHÒNG GIÁO DỤC ĐÀO TẠO BỐ TRẠCH §Ò chÝnh thøc SBD kú thi CHäN häc sinh giái líp n¨m häc 2012-2013 m«n: tin häc Thời gian 150 phút, không kể thời gian giao đề đề Sử dụng ngôn ngữ lập trình Turbo Pascal để lập trình giải các bài toán sau: Câu (3.0đ): Chữ số: CHUSO.PAS Viết chương trình nhập vào số tự nhiên n (n< 1000) và xác định: - n có bao nhiêu chữ số - Tổng các chữ số n - Chữ số đầu tiên bên trái n Ví dụ: Nhap vao so nguyen: 254 254 la so co chu so 254 co tong các chu so la 11 254 co chu so dau tien ben trai la Câu (3.0đ): Xóa xâu: XOAXAU.PAS Viết chương trình nhập vào xâu ký tự St1 (nhỏ 30 ký tự), hãy loại bỏ khỏi xâu nhóm các ký tự ‘abc’ và xuất xâu St2 sau đã loại bỏ các ký tự trên Ví dụ: Nhập vào xâu là: acabcababcac Kết xâu St2 là: acabac Câu 3: (4,0 điểm) TANSUAT.PAS Cho dãy số nguyên A gồm n phần tử A1, A2, A3, , An (1 ≤ n ≤ 20000) (0 ≤ Ai ≤ 32000, ≤ i ≤ n) Lập chương trình xác định số lần xuất số dãy A Dữ liệu vào: Cho file văn TANSUAT.INP có cấu trúc sau: + Dòng 1: Ghi số nguyên dương n (n<10) + Dòng 2: Ghi n số nguyên, là giá trị các phần tử thuộc dãy A Các số ghi cách ít dấu cách Dữ liệu ra: Ghi file văn TANSUAT.OUT gồm m dòng (0 ≤ m ≤ n) Mỗi dòng ghi 02 số nguyên dương u, v Trong đó u là giá trị phần tử xuất dãy A; v là số lần xuất u dãy A Ví dụ: TANSUAT.INP TANSUAT.OUT 10 1654123654 ==== HÕt ==== 1 2 (2) PHÒNG GIÁO DỤC ĐÀO TẠO BỐ TRẠCH kú thi CHäN häc sinh giái líp n¨m häc 2012-2013 m«n: tin häc Híng dÉn chÊm I- Ph¬ng ph¸p: - Gi¸m kh¶o t¹o bé d÷ liÖu vµo, tÝnh to¸n kÕt qu¶ Thùc hiÖn ch¬ng tr×nh cña häc sinh vµ so s¸nh kÕt qu¶ - Giám khảo có thể sử dụng chơng trình gợi ý dới đây để tính toán kết liệu vµo - Chơng trình học sinh đúng test, giám khảo cho 0,5 điểm Nh vậy, bài cã ®iÓm th× gi¸m kh¶o ph¶i t¹o bé test - Riêng câu giám khảo tạo liệu vào với file TANSUAT.INP có đủ liệu để kiểm tra II- Ch¬ng tr×nh gîi ý: Câu (3.0đ): Chữ số: Program Chuso; var n,a,b,c,t,s,x,k: integer; BEGIN write('Nhap so tu nhien n nho hon 1000: n = '); Repeat readln(n); if (n<0) and (n>=1000) then writeln(' <= n < 1000 '); until (n>=0) and (n<1000); t := n; a := t div 100; t := t- 100*a; b := t div 10 ; t := t- 10*b; c := t; s := a+b+c; if (n>=0) and (n <=9) then begin x:= c; k:=1 end else if (n>=10) and (n <=99) then begin x:= b; k:=2 end else begin x:= a; k:=3 end; writeln(n,' co ',k,' chu so.' ); writeln(n,' co tong cac chu so la ',s); writeln(n,' co chu so dau tien ben trai la ',x); readln; end Câu (3.0đ): Xóa xâu: Program xoaxau; VAR st: string[30]; st1: string; l,p: byte; BEGIN writeln('Chuong trinh loai bo ''abc'' :'); (3) write('Nhap mot xau 30 ki tu St : ');readln(st); st1:=st; repeat l:=length(st1); p:=pos('abc',st1); if (p<>0) then st1:=copy(st1,1,p-1)+copy(st1,p+3,l-p-2); until (p=0); writeln(' St = ',st); writeln(' St2 = ',st1); readln; END Câu 3: (4,0 điểm) Program Tan_suat; const fi='tansuat.inp'; fo='tansuat.out'; Type MMC =array [1 20000] of integer; var A: MMC; n: integer; procedure Xuly; VAR F:TEXT; i,x:integer; begin assign(f,fi); reset(f); readln(f,n); fillchar(A,sizeof(A),0); for i:=1 to n begin read(f,x); A[x]:=A[x]+1; end; close(f); assign(f,fo); rewrite(f); for i:=1 to n if a[i]>0 then writeln(f,i,' ', a[i]:4); close(f); end; BEGIN Xuly; END (4)