Bài tập Tin học 11 lập trình Pascal

48
103 KB
3
196

Nhấn vào bên dưới để tải tài liệu

Để tải xuống xem đầy đủ hãy nhấn vào bên trên

Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang Bài tập pascal cơ bản đến nâng cao theo chương trình TIN HỌC lớp 11 không phân ban Nhằm giúp các bạn học sinh lớp 11 tiếp cận với ngôn ngữ lập trình Pascal một cách dễ dàng và vận dụng vào các ngôn ngữ lập trình khác trong tin học, tôi sưu tầm và biên soạn một số bài toán cơ bản đến nâng cao có trong chương trình của lớp 11 không phân ban. Các chương trình nhằm mục đích tham khảo cho các bạn ham mê tin học và là tài liệu chuẩn bị cho các bài kiểm tra về môn tin học. Nha trang tháng 3/2011 ĐT : 0972.311.481 Trang 1 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang Phần I : CÁC BÀI TẬP CƠ BẢN Bài 1: Tìm giá trị lớn nhất trong 4 số a, b, c, d (a, b, c, được nhập từ bàn phím). Program Program TIM_SO_LON_NHAT; Uses crt; Var a,b,c,d,max : real; BEGIN Clrscr; Writeln('TIM SO LON NHAT TRONG BON SO A, B, C, D'); Writeln('---------------------------------------------------------------'); Write('Nhap a='); Readln(a); Write('Nhap b='); Readln(b); Write('Nhap c='); Readln(c); Write('Nhap d='); Readln(d); max :=a; If b>max then max :=b; If c>max then max :=c; if d>max then max :=d; Writeln('So lon nhat la : ',max : 4 : 2); Readln; END. Bài 1B: Viêt chương trình nhập ba số dương bất kỳ, kiểm tra ba số vừa nhập có phải là ba cạnh của tam giác không? Nếu phải thì tính chu vi và diện tích của tam giác đó. PROGRAM Kiem_tra_tam_giac; Uses crt; Var a,b,c,cv,s,p : real; BEGIN Clrscr; Writeln(‘nhap so thu nhat’); readln(a); Writeln(‘nhap so thu hai’); readln(b); Writeln(‘nhap so thu ba’); readln(c); If(a+b>c) And(a+c>b) And(b+c>a) then Begin Cv :=a+b+c; p :=c/2;s :=sqrt(p*(p-a)*(p-b)*(p-c)); Writeln(‘ba so vua nhap la ba canh cua tam giac’); ĐT : 0972.311.481 Trang 2 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang Writeln(‘ chu vi cua tam gia la’, cv : 4 : 2, ‘ dien tich cua tam giac la’, s:6 :2); End Else Writeln(‘ba so vua nhap khong phai la ba canh cua tam giac’); Readln End. Bài 1C: Viết chương trình nhập độ cao h so với mặt đất của một vật rơi tại nơi có gia tốc g, Tính và hiển thị vận tốc của vật tại mặt đất. Program Tinh_van_toc; Uses crt; Var h, v,g : real; Begin Clrscr; Writeln(‘nhap do cao cua vat’); readln(h); Writeln(‘nhap gia toc’); readln(g); V :=sqrt(2*g*h); Writeln(‘van toc tai mat dat la’, v : 6 : 2); Readln End. Bài 2: Viết chương trình giải phương trình ax+b=0 Program GIAI_PHUONG_TRINH_BAC_NHAT; Uses crt; Var a,b,x : real; Begin Clrscr; Writeln('GIAI PHUONG TRINH BAC NHAT : AX + B=0'); Writeln('------------------------------------------------------------'); Write ('Nhap a= '); readln(a); Write ('Nhap b= '); readln(b); If(a=0) then If(b=0) then Writeln(' Phuong trinh co vo so nghiem') Else writeln(' Phuong tring vo nghiem') Else Writeln('Phuong trinh co nghiem x=',-b/a : 4 : 2); ĐT : 0972.311.481 Trang 3 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang Readln End. Bài 3: Viết chương trình giải bất phương trình bậc 1 (ax + b >• 0) Program BAT_PHUONG_TRINH_BAC_I; Uses crt; Var a,b : real; Begin Clrscr; Writeln('GIAI BAT PHUONG TRINH BAC NHAT : AX + B>=0'); Writeln('----------------------------------------------------------------------'); Write('nhap a='); readln(a); Write('nhap b='); readln(b); If a<>0 then If a>0 then Writeln('Bat phuong trinh co nghiem : x>=',-b/a : 4 : 2) Else Writeln('Bat phuong trinh co nghiem : x<=',-b>=0 then Writeln('Bat phuong trinh co vo so nghiem') Else writeln('Bat phuong trinh vo nghiem'); Readln End. Bài 4: Viết chương trình giải phương trình (ax2 + bx + c =0) Program GIAI_PHUONG_TRINH_BACII; Uses crt; Var a,b,c,d,x,x1,x2 : real; Begin Clrscr; Writeln('GIAI PHUONG TRINH BAC II : '); Writeln('-------------------------------------------'); Write('Nhap he so a='); readln(a); Write('Nhap he so b='); readln(b); Write('Nhap he so c='); readln(c); If a=0 then ĐT : 0972.311.481 Trang 4 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang If b=0 then If c=0 then Writeln('Phuong trinh co vo so nghiem') Else Writeln('Phuong trinh vo nghiem') Else Writeln('Phuong trinh co mot nghiem : x=',-c/b : 4 : 2) Else Begin d :=b*b-4*a*c; If d=0 then Writeln('Phuong trinh co nghiem kep : x=',-b/(2*a) : 4 : 2) Else if d<0>r then Writeln('Diem A nam ngoai duong tron') Else Writeln('Diem A nam trong duong tron'); Readln End. Bài 7 b: Viết chương trình nhập vào tâm và bán kính hai đường tròn, xác định vị trí tương đối của hai đường tròn đó. Program Khao_Sat_Hai_Duong_Tron; Var R 1, R2 ,x1, y1,x2,y2, Kc, Tong, Hieu : Real; BEGIN Writeln('KHAO SAT 2 DUONG TRON'); Writeln('----------------------------------------------------'); Writeln; Writeln('*Duong tron thu nhat'); Write(' +Ban kinh : '); Readln(R1); Write(' +Toa do x : '); Readln(x1); Write(' +Toa do y : '); Readln(y1); writeln; ĐT : 0972.311.481 Trang 7 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang Writeln('*Duong tron thu hai'); Write(' +Ban kinh : '); Readln(R2); Write(' +Toa do x : '); Readln(x2); Write(' +Toa do y : '); Readln(y2); Kc :=Sqrt(Sqr(x1 – x2) + Sqr(y1 – y2)); Tong :=R1 + R2; Hieu :=ABS(R1 – R2); If (Kc = 0) AND (Hieu = 0) Then Writeln('-Hai duong tron trung nhau') Else If (Hieu > Kc) Then Writeln('-Hai duong tron long nhau') Else If (Tong = Kc) OR (Hieu = Kc) Then Writeln('-Hai duong tron tiep xuc nhau') Else If (Tong > Kc) AND (Hieu < Kc) Then Writeln('-Hai duong tron cat nhau ') Else If (Tong < Kc) Then Writeln('-Hai duong tron o ngoai nhau-'); Readln End. Bài 8: Tính xy ( Với x, y là số thực). Program X_LUYTHUA_Y; Uses crt; Var lt, x,y,z : real; Begin Clrscr; Writeln(‘TINH X LUY THUA Y : ’); Writeln('----------------------------------'); Write('Nhap x = '); readln(x); Write('nhap y = '); readln(y); If x>=0 then Begin ĐT : 0972.311.481 Trang 8 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang z :=exp(y*ln(x)); Writeln('x ^ y = ',z : 4 : 2); End Else Writeln('Khong tinh duoc do x la so am'); Readln; End. Bài 9: Tính n! Program TINH_N_GIAI_THUA; Uses crt; Var i,n,gt : integer; Begin Clrscr; Writeln(' TINH N GIAI THUA : '); Writeln('----------------------------------'); Write('Nhap n ='); readln(n); gt :=1; For i :=1 to n do gt :=gt*i; Writeln(n, '!= ',gt); Readln; End. Bài 10** : Đọc ngày tháng năm, sau đó viết ra màn hình đó là ngày thứ mấy trong tuần. Program Ngaythang; Uses crt; Var Thu, Ngay, Thang : Byte; Nam : Integer; BEGIN Clrscr; Write (' Doc Ngay : '); Readln ( Ngay ); Write (' Doc Thang : '); Readln ( Thang ); Write (' Doc Nam : '); Readln ( Nam ); Nam :=1900 + ( Nam mod 1900 ); If Thang < 3 Then ĐT : 0972.311.481 Trang 9 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang Begin Thang :=Thang + 12; Nam :=Nam - 1; End; Thu :=Abs ( Ngay + Thang * 2 + ( Thang + 1 ) * 3 div 5 + Nam + Nam div 4 ) mod 7; Case Thu Of 0 : Writeln (‘ngay ’,ngay,’ thang ',thang,’ nam ’,nam,’ la ngay Chu Nhat '); 1 : Writeln ('ngay ’,ngay,’ thang ',thang,’ nam ’,nam,’ la ngay Thu Hai '); 2 : Writeln ('ngay ’,ngay,’ thang ',thang,’ nam ’,nam,’ la ngay Thu Ba '); 3 : Writeln (‘ngay ’,ngay,’ thang ',thang,’ nam ’,nam,’ la ngay Thu Tu '); 4 : Writeln (‘ngay ’,ngay,’ thang ',thang,’ nam ’,nam,’ la ngay Thu Nam '); 5 : Writeln ('ngay ’,ngay,’ thang ',thang,’ nam ’,nam,’ la ngay Thu Sau '); 6 : Writeln ('ngay ’,ngay,’ thang ',thang,’ nam ’,nam,’ la ngay Thu Bay '); End; Readln; END. Bài 11: Viết chương trình : Nhâp số báo danh Nhập điểm văn, toán, ngoại ngữ In ra màn hình dưới dạng :       Phiếu điểm: Số báo danh : Điểm văn : Điểm toán : Điểm ngoại ngữ : Tổng số điểm: Bạn đã trúng tuyển ( hoặc Bạn đã không trúng tuyển ) với điều kiện Tổng số điểm >= 15 hay ngược lại. Program INPHIEU; Uses Crt; Var SBD : Integer; Van, Toan, Ngoaingu, Tongdiem : Real; ĐT : 0972.311.481 Trang 10 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang BEGIN Clrscr; Write (' So bao danh : '); Readln( SBD ); Write (' Diem toan : '); Readln( Toan ); Write (' Diem ngoai ngu : '); Readln( Ngoaingu ); Write (' Diem van : '); Readln ( Van ); Tongdiem :=Toan + Van + Ngoaingu; Writeln (' Phieu Bao Diem '); Writeln (' So bao danh : ', SBD ); Writeln (' Diem van : ', Van ); Writeln (' Diem toan : ', Toan ); Writeln (' Diem ngoai ngu : ', Ngoaingu); Writeln (' Tong diem : ', Tongdiem); If Tongdiem >= 15 Then Writeln(' Ban da trung tuyen ') Else Writeln(' Ban khong trung tuyen '); Readln; END. Bài 12: Viết chương trình nhập hai số thực. Sau đó hỏi phép tính cần thực hiện và in kết quả của phép tính đó. Nếu là “+”, in kết quả của tổng lên màn hình. Nếu là “-”, in kết quả của hiệu lên màn hình. Nếu là “/”, in kết quả của thương lên màn hình. Nếu là “*”, in kết quả của tích lên màn hình. Nếu là “+”, in kết quả của tổng lên màn hình. Nếu là “+”, in kết quả của tổng lên màn hình. Program Chuongtrinh_tinh; Uses Crt; ĐT : 0972.311.481 Trang 11 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang Var a, b, T : Real; Pt : Char; BEGIN Clrscr; Write (' a = '); Readln( a ); Write (' b = '); Readln( b ); Write (' Phep tinh thuc hien la (+ - * /) : '); Readln( Pt ); If Pt = '+’ Then T :=a + b; If Pt = '-’ Then T:=a - b; If Pt = '*’ Then T :=a * b; If Pt = '/’ Then T :=a / b; Write ( a, pt, b, ' = ', T ); Readln; END. ĐT : 0972.311.481 Trang 12 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang PHẦN II : CÂU LỆNH CÓ CẤU TRÚC Bài 12. Cho số tự nhiên n, hãy lập trình để tính các tổng sau : a. 1 + 1/22 + 1/32 + … + 1/n2 b. 1 + 1/2! + 1/3! + … + 1/n! Program Caua; Uses crt; Var n, i : Word; S : Real; BEGIN Clrscr; Write (' Nhap n : '); Readln (n); S :=0; For i :=1 To n Do S :=S + 1 / sqr(i); Writeln ('Tong la S = ', S : 6 : 2); Readln END. Program Cau_b; Uses crt; Var n, i, j, p : Word; S : Real; BEGIN Clrscr; Write (' Nhap n : '); p :=1; Readln(n); s :=0; For i :=1 To n Do Begin p :=p * i; S :=S + 1 / p; End; ĐT : 0972.311.481 Trang 13 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang Writeln ('Tong la S = ', S : 6 : 2); Readln End. Câu 13a : Lập trình tính tổng : A = 1 + 1/2 + 1/3 + … + 1/n ở đây n là số tự nhiên được nhập vào từ bàn phím. Program tinhtong; Uses Crt; Var i, n : Integer; tong : Real; BEGIN Clrscr; Write (' Cho so tu nhien n : '); Readln (n); tong :=0; i :=1; While i <=>b) do Begin If a>b then a :=a-b else b :=b-a; End; uc :=a; bc :=(a*b)/uc; Writeln(‘uoc chung lon nhat cua ‘,a,’ va ’,b,’ la ‘,uc); Writeln(‘boi chung nho nhat cua ‘,a,’va ’,b,’ ‘,bc); la Readln END. Câu 15 : Chương trình nhập mảng một chiều gồm n phần tử n<=100>0 then demd :=demd+1; Writeln(‘ so luong phan tu duong cua mang la’, demd); {-----------------------------------Cau b-----------------------------------------} s :=0; For i :=1 to n do if A[i]>0 then s :=s+ A[i]; Writeln(‘ tong cac phan tu duong cua mang la’, s); {-----------------------------------Cau c-----------------------------------------} s :=0; For i :=1 to n do s :=s+A[i]; tbm :=s/n; Writeln(‘ trung binh cac phan tu cua mang la ’, tbm : 6 : 2); {----------------------------------------Cau d-------------------------------------} ĐT : 0972.311.481 Trang 17 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang s :=0; demd :=0; For i :=1 to n do Begin if A[i]>0 then s :=s+ A[i]; demd :=d+1; End; tb :=s/demd; Writeln(‘ trung binh cac phan tu duong cua mang la ’, tb : 6 : 2); {----------------------------------------Cau e-------------------------------------} Writeln(‘ nhap gia tri can tim vi tri ’); readln(k); J :=1; While (j<=n)>k) do j :=j+1; If j> n then Writeln(‘khong co gia tri ’, k, ’ trong mang’) Else Writeln(k, ‘ nam o vi tri thu ’, j,’ trong mang’); {----------------------------------------Cau f---------------------------------------------} Writeln(‘ nhap gia tri can tim vi tri ’); readln(k); J :=1; writeln(‘cac vi tri xuat hien cua ’,k,’ trong mang la’); While (j<=n)>0) do Begin J:=j+1; End; ĐT : 0972.311.481 Trang 18 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang If j> A[i] - 1 then demnt :=demnt+1; End; Writeln(‘ so luong phan tu la nguyen to la’, demnt); {----------------------------------------Cau h-------------------------------------------} d :=A[2]-A[1]; j:=3; While (j<=n)>n then Writeln(‘ mang vua nhap la cap so cong’) else Writeln(‘ mang vua nhap khong phai la cap so cong’); {------------------------------------------Cau i-----------------------------------------------} For i :=1 to n do For j :=i+1 to n-1 do If A[j]>A[j+1] then Begin {doi vi tri hai phan tu A[j] va A[j+1]} tg :=A[j]; A[j] :=A[j+1]; A[j+1] :=tg; End; Writeln(‘mang sau khi duoc sap xep la’); For i :=1 to n do write(A[i] : 5); Readln END. Bài 15 b: Viết chương trình nhập vào mảng gồm n phần tử (n<=100)>a[j] then Begin tg :=a[i]; a[i] :=a[j]; a[j] :=tg; End; writeln(' day sau khi sap xep la '); for i :=1 to n do ĐT : 0972.311.481 Trang 20 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang write( a[i] : 4); readln; End. Bài 15C: Viết chương trình nhập mảng gồm n phần tử kiểu nguyên(n<=100)> de ket thuc '); Readln End. Bài 18. Viết chương trình nhập mảng gồm n (n<=100)phần> de ket thuc '); Readln End. Bài tập phần xâu : Bài tập1: Chương trình nhập từ bàn phím các ký tự chương trình đếm số lần xuất hiện của mỗi ký tự Program Dem_so_lan; Uses Crt ; Var a : Array[ 'A'..'Z' ] of integer; ch : char ; i : byte ; BEGIN Clrscr ; For ch :='A' to 'Z' Do a[ch] :=0 ; Writeln (' Go phim 50 lan ') ; For i :=1 To 50 Do Begin ĐT : 0972.311.481 Trang 25 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang ch :=Readkey ; ch :=Upcase(ch) ; a[ch] :=a[ch] + 1 ; End; Writeln (' So lan xuat hien cac ki tu la : ') ; For ch :='A' to 'Z' do If a[ch] > 0 Then Writeln (ch ‘xuat hien’, a[ch] : 4, ' lan. '); Readln ; END. Bài tập 2: Nhập xâu cho trước kiểm tra có phải xâu đối xứng hay không? Program Xau-doi-xung; Uses Crt; Var St : string; dx : Boolean; i, len : byte; BEGIN Clrscr; Write(' Nhap xau St = '); Readln(St); dx:=True; i :=1; len:=Length(St); While dx And (i<=(len>0 do Begin Delete(s,pos(ch,s),1); i :=i+1; End; End; Writeln(‘xau sau khi xoa het so la : ’,s); Readln End. Bài 5: Viết chương trình nhập vào xâu ký tự và xuất ra màn hình xâu sau khi đã bỏ hết ký tự trắng dư thừa. Program xoa_ky_tu_trang; Uses crt; Var I,k : byte; S : string; Begin Clrscr; Writeln(‘nhap xau’); Readln(s); While (s[1]=’ ‘ do Delete(s,1,1); While (s[lengh(s)] =’ ‘ do Delete(s,length(s),1); While pos(‘ ‘,s)<>0 do Delete(s,pos(‘ ‘,s),1); ĐT : 0972.311.481 Trang 28 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang Writeln(‘ xau sau khi xoa het ky tu trang du thua la’, s); Readln End. Bài 6: Viết chương tình nhập vào một xâu, sau đó xóa hết ký tự trắng dư thừa và đổi các ký tự đầu của mỗi từ thành chữ hoa. Program Doi_chu; Uses crt; Var I,k : byte; S : string; Begin Clrscr; Writeln(‘nhap xau’); Readln(s); While (s[1]=’ ‘ do Delete(s,1,1); While (s[lengh(s)] =’ ‘ do Delete(s,length(s),1); While pos(‘ ‘,s)<>0 do Delete(s,pos(‘ ‘,s),1); K :=length(s); For i :=1 to k do if ( s[i]=’ ‘ )And( s[i+1]<>’ ‘) do upcase(s[i+1]; Writeln(‘xau sau khi dieu chinh la’,s); Readln End. Bài tập phần bản ghi, file Bài tập 1: Chương trình nhập danh sách học sinh gồm Họ tên, tuổi, lớp của học sinh,in ra danh sách vừa nhập Program danh_sach; Uses Crt; Const n=15; Type Danhsach=record ĐT : 0972.311.481 Trang 29 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang holot : string[25]; ten : string[10]; tuoi : 0..99; lop : string[3]; End; Var ds : array [1..n] of Danhsach; i : byte; BEGIN ClrScr; Writeln('Hay nhap danh sach hoc sinh : '); Writeln; For i :=1 to n do Begin Writeln('Thong tin hoc sinh thu ',i); Write('Cho ho lot : '); Readln(ds[i].holot); Write('Cho ten : '); Readln(ds[i].ten); Write('Cho tuoi : '); Readln(ds[i].tuoi); Write('Cho lop : '); Readln(ds[i].lop); Writeln; End; Writeln('Danh sach hoc sinh : '); For i :=1 to n do With ds[i] do Writeln(holot : 20,ten : 10,tuoi : 4,lop : 5); Writeln; Write('Bam Enter de ket thuc...'); Readln; ĐT : 0972.311.481 Trang 30 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang END. Bài tập 2: Chương trình nhập danh sách học sinh gồm Họ tên, tuổi, lớp. Chương trình in ra danh sách sau khi sắp xếp theo thứ tự tăng dần. Program sap_xep; Uses Crt; Const n=5; Type Danhsach=record holot : string[25]; ten : string[10]; tuoi : 0..99; lop : string[3]; End ; Var ds : array [1..20] of Danhsach; i,j : byte; f : file of Danhsach; Procedure Doi(i,j : byte); Var tg : Danhsach; Begin tg :=ds[i]; ds[i] :=ds[j]; ds[j] :=tg; End; BEGIN ClrScr; Writeln('Nhap danh sach hoc sinh tu file data.dat : '); Writeln; ĐT : 0972.311.481 Trang 31 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang Assign(f,'data.dat'); Reset(f); For i :=1 to n do Read(f,ds[i]); Close(f); For i :=1 to n-1 do For j :=i+1 to n do begin If (ds[i].ten>ds[j].ten) then Doi(i,j) Else If (ds[i].ten=ds[j].ten)And(ds[i].holot>ds[j].holot) then Doi(i,j); end; Writeln('Danh sach hoc sinh : '); For i:=1 to n do With ds[i] do Writeln(holot : 20,ten : 11,tuoi : 4,lop : 5); Writeln; Write('Bam Enter de ket thuc...'); Readln; END. Bài tập 3 : Thông tin về mỗi học sinh là một bản ghi gồm các trường : Họđệm : một xâu 25 kí tự. Tên : một xâu 10 kí tự. Tuổi : một số nguyên hai chữ số. Lớp : một xâu hai chữ số và một chữ cái viết hoa Một file bản ghi chứa một danh sách một lớp gồm 20 học sinh. Hãy lập chương trình hiển thị danh sách lên màn hình, mỗi người một dòng. ĐT : 0972.311.481 Trang 32 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang Program Nhaphocsinh; Uses Crt; Const n=5; Type Danhsach=record holot : string[25]; ten : string[10]; tuoi : 0..99; lop : string[3]; end; Var ds : Danhsach; i : byte; f : file of Danhsach; BEGIN ClrScr; Writeln('Danh sach hoc sinh tu file bai2.dat'); Writeln; Assign(f,'bai2.dat'); Reset(f); For i:=1 to n do Begin Read(f,ds); With ds do Writeln(holot : 20,ten : 11,tuoi : 4,lop : 5); End; Close(f); Writeln; Write('Bam Enter de ket thuc...'); Readln; END. ĐT : 0972.311.481 Trang 33 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang Bài tập 4 : Một file bản ghi chứa một danh sách học sinh, thông tin về mỗi học sinh giống như bài trên. Hãy lập chương trình tạo một file bản ghi khác chứa danh sách đó, mỗi bản ghi gồm các trường : Họtên : một xâu 35 kí tự. Tuổi : một số nguyên hai chữ số. Khối : một số nguyên hai chữ số. Lớp : một chữ cái viết hoa Prorgam file_banghi; Uses Crt; Type Danhsach1=record holot : string[25]; ten : string[10]; tuoi : 0..99; lop : string[3]; End; Danhsach2=record hoten : string[35]; tuoi : byte; khoi : byte; lop : char; End; Var ds1 : Danhsach1; ds2 : Danhsach2; f1 : file of Danhsach1; f2 : file of Danhsach2; c : integer; BEGIN ĐT : 0972.311.481 Trang 34 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang ClrScr; Writeln('Ghi tu file bai3.dat sang bai3n.dat : '); Writeln; Assign(f1,'bai3.dat'); Reset(f1); Assign(f2,'bai3n.dat'); Rewrite(f2); While not Eof(f1) do Begin Read(f1,ds1); With ds1 do Begin ds2.hoten :=holot+ten; val(copy(lop,1,2),ds2.khoi,c); ds2.tuoi:=tuoi; ds2.lop :=UpCase(lop[3]); Write(f2,ds2); End; End; Close(f1); Close(f2); Writeln; Writeln('Bam Enter de ket thuc!'); Readln; END. ĐT : 0972.311.481 Trang 35 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang Bài tập về chương trình con Bài tập 1. Dùng thủ tục chuyển một số tự nhiên n cho trước sang hệ cơ số 2. Procedure Change ( n : integer ; Var St : String ) ; b : Array[0.. 1] Of Char = ('0', '1') ; Var du, So : Integer ; S : String ; Begin S :='' ; {tao xau rong} So :=n ; Repeat Du:= So mod 2 ; So:=So div 2 ; S:=b[du] + s ; Until So = 0 ; St :=S ; End ; Bài tập 2: Dùng thủ tục giải phương trình bậc hai ax2 + bx + c = 0 Uses Crt ; Var a, b, c, x1, x2 : real; {================================} Procedure Nhapabc(var aa,bb,cc : real); Begin Write('a='); Readln(aa); Write('b='); Readln(bb); Write('c='); Readln(cc); ĐT : 0972.311.481 Trang 36 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang End; {=================================} Procedure GPTB2; Var Delta : real; Begin Delta :=sqr(b)-4*a*c; If Delta<0>0 then GPTB2 Else Writeln(' Khong phai phuong trinh bac hai '); Readln ; END. Bài tập 3: Viết chương trình thực hiện lần lượt các công việc sau :  Lập thủ tục nhập ba số thực dương a, b, c từ bàn phím.  Lập thủ tục kiểm tra xem ba số trên có lập thành ba cạnh của tam giác hay không ?  Viết thủ tục tính diện tích của tam giác.  Viết thủ tục tính các trung tuyến của tam giác.  Viết hoàn thiện chương trình chính. Program Chuong_trinh; Uses Crt; Var a, b, c : real ; {================================} Procedure Nhap(Var a, b, c : real); Procedure input (Var a : real; tenbien : Char); Begin Repeat Write('Nhap ' + tenbien+' = '); Readln(a); Until (a>=0); End; Begin Input(a, 'a'); Input(b, 'b'); Input(c, 'c'); End; Procedure Kiemtra(a, b, c : Real); ĐT : 0972.311.481 Trang 38 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang Begin If (a2000 : '); k :=0; ĐT : 0972.311.481 Trang 40 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang for i :=1 to 2000 do Begin d :=0; for j :=1 to i-1 do if i mod j=0 then d :=d+j; if d=i then Begin write(i : 5); k :=k+1; End; End; writeln; writeln(' Trong day 1-->2000 co ',k,' so hoan hao'); End; Begin clrscr; write(' Nhap n='); readln(n); hoanhao; vietlen; readln; End. ĐT : 0972.311.481 Trang 41 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang Bài 5 : Nhập vào 1 số nguyên gồm 4 chữ số viết chương trình con thực hiện  Kiểm tra tình chắn lẻ  Kiểm tra xem có phải là số nguyên tố không  Kiểm tra xem có phải là số chính phương không Sau đó trên chương trình chính kiểm tra và trả lời số vừa nhập thuộc số nào? Program chuong_trinh; uses crt; var i,n,k,d : integer; ok : Function boolean; chanle(n : integer) : boolean; Begin ok :=true; if n mod 2<>0 then ok :=false; chanle :=ok; End; Function Begin nguyento(n : integer) : boolean; ok :=true; d :=0; for i :=2 to n-1 do if n mod i=0 then d :=d+1; if d<>1 then ok :=false; nguyento :=ok; End; ĐT : 0972.311.481 Trang 42 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang Function chinhphuong(n : integer) : boolean; Begin ok :=true; k :=trunc(sqrt(n)); if sqr(k)<>n then ok :=false; chinhphuong :=ok; End; Begin clrscr; write(' Nhap n=');readln(n); if chanle(n) then writeln(' So vua nhap la chan') else writeln(' So vua nhap la so le'); if nguyento(n) then writeln(' So vua nhap la nguyen to') else writeln(' So vua nhap khong phai la so nguyen to'); if chinhphuong(n) then writeln(' So vua nhap la so chinh phuong') else writeln(' So vua nhap khong la so chinh phuong'); readln; End. Bài 6. Viết chương trình con tính a Giai Thừa với a nhập từ bàn phím Program giaithua; uses crt; var a : Function integer; gt(n : byte) : ĐT : 0972.311.481 Longint; Trang 43 Trần Văn Chung trường THPT Hoàng Văn Thụ Nha Trang Var s : i : Longint; byte; Begin s :=1; For i :=2 to n do s :=s*i; gt :=s; End; Begin clrscr; write ('Nhap so can tinh giai thua : ');readln(a); if a :=0 or a :=1 then writeln('Giai thua cua ',a,' = 1') else writeln('Giai thua cua',a,' =', gt(a) ); End. Bài 7. Nhập vào 1 mảng gồm n số nguyên (2

Video liên quan

Chủ đề