1. Trang chủ
  2. » Cao đẳng - Đại học

ngan hang cau hoi chuong IV tin 11

25 7 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 25
Dung lượng 32,28 KB

Nội dung

[r]

(1)CHƯƠNG IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC Bài 11: Kiểu mảng Cho mảng a gồm n phần tử n<=15 Giá trị từng phần tử là số nguyên Thực hiện các chương trình sau: Tính tổng các phần tử mảng Input A=1 Output S = 23  Xác định bài toán: - Input: mảng a - Output: tổng các phần tử mảng  Thuật toán: - B1: Nhập n, a1,a2, …, an B2: i 1, s  - B3: s  s + B4: i i + B5: nếu i > n, đưa S và kết thúc - B6: quay lại bước  Chương trình: program tinhtong; uses crt; var n,i:byte; a:array[1 15] of integer; s:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n begin write('nhap phan tu a[',i,'] = '); readln(a[i]); end; s:=0; for i:=1 to n s:=s+a[i]; writeln('tong cac phan tu mang la: ',s); readln end (2) Tính tổng các phần tử âm của mảng Input A = -4 -7 Output S = -11  Xác định bài toán: - Input: mảng a - Output: tổng các phần tử âm mảng  Thuật toán: - B1Nhập n, a1,a2, …, an B2: i 1, s  - B3: nếu < thì s  s + B4: i i + B5: nếu i > n, đưa S và kết thúc - B6: quay lại bước  Chương trình: program tongam; uses crt; var n,i:byte; a:array[1 15] of integer; s:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n begin write('nhap phan tu a[',i,'] = '); readln(a[i]); end; s:=0; for i:=1 to n if a[i] < then s:=s+a[i]; writeln('tong cac phan tu mang la: ',s); readln end (3) Tính tổng và trung bình cộng của các phần tử chẵn của mảng Input A = -4 -7 Output S = 2, TB =  Xác định bài toán: - Input: mảng a Output: tổng các phần tử chẵn và TB cộng của các phần tử chẵn mảng  Thuật toán: - B1Nhập n, a1,a2, …, an - B2: i 1, s  0, d  - B3: nếu chia hết cho thì s  s + , d d+1 B4: i i + B5: nếu i > n, tính TB  s/d, đưa S và TB rồi kết thúc - B6: quay lại bước  Chương trình: program tongchan; uses crt; var n,i:byte; a:array[1 15] of integer; s:integer; TB: real; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n begin write('nhap phan tu a[',i,'] = '); readln(a[i]); end; s:=0; d:=0; for i:=1 to n if a[i] mod = then begin s:=s+a[i]; d:=d+1; end; TB:= s/d; writeln('tong cac phan tu mang la: ',s); writeln(‘trung binh cac phan tu chan la: ‘,TB); readln end (4) Tìm phần tử có giá trị lớp nhất của mảng Input A = -4 -7 Output Max = 6, vt =  Xác định bài toán: - Input: mảng a - Output: phần tử có giá trị lớn nhất mảng, và vị trí của nó  Thuật toán: - B1Nhập n, a1,a2, …, an - B2: i 2, Max  a1 , cs  B3: nếu i > n thì đưa Max, cs và kết thúc - B4: nếu > Max, thì Max  , cs  i B5: i  i + 1, quay lại bước  Chương trình: program timmax; uses crt; var n,i,cs:byte; a:array[1 15] of integer; Max:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n begin write('nhap phan tu a[',i,'] = '); readln(a[i]); end; Max := a[i]; cs:=i; for i:=2 to n if a[i] > Max then begin Max:=a[i]; cs:=i; end; writeln(' phan tu lon nhat mang la: ',Max , ‘o vi tri ‘,i); readln end (5) Tìm phần tử có giá trị nhỏ nhất của mảng Input A = -4 -7 Output Min = -7, vt =  Xác định bài toán: - Input: mảng a - Output: Phần tử có giá trị nhỏ nhất mảng và vị trí của nó  Thuật toán: - B1Nhập n, a1,a2, …, an - B2: i 2, Min  a1 , cs - B3: nếu i > n thì đưa Max và kết thúc - B4: nếu > Max, thì Max  , cs i B5: i  i + 1, quay lại bước  Chương trình: program timmax; uses crt; var n,i,cs:byte; a:array[1 15] of integer; Min:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n begin write('nhap phan tu a[',i,'] = '); readln(a[i]); end; Min := a[i]; cs  i; for i:=2 to n if a[i] < Min then begin Min:=a[i]; cs:= i; end; writeln(' phan tu nho nhat mang la: ',Min,’ o vi tri ‘,i); readln end (6) Sắp xếp dãy a thành dãy không giảm Input A = -4 -7 Output A = -7 -4  Xác định bài toán: - Input: mảng a - Output: mảng a là dãy không tăng  Thuật toán: - B1Nhập n, a1,a2, …, an - B2: m n - B3: Nếu M < thì đưa dãy a đã được sắp xếp rồi kết thúc - B4: m  m – 1, i  - B5: i i + B6: Nếu i > M thì quay lại bước 3; B7: nếu > + , thì tráo đổi và ai+1 cho - B8: quay lại bước  Chương trình: program sxkhonggiam; uses crt; var n,i,m,j:byte; a:array[1 15] of integer; t:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n begin write('nhap phan tu a[',i,'] = '); readln(a[i]); end; for j:=n downto for i:= to j-1 if a[i] > a[i+1] then begin t:=a[i]; a[i]:=a[i+1]; a[i+1]:=t; end; writeln(' Day so sau sap xep: ’); for i:=1 to n write(a[i]:4); readln end (7) Tính tổng các số nguyên dương chia hết cho Input A= Output S = 15 10  Xác định bài toán: - Input: mảng a - Output: tổng các phần tử mảng chia hết cho  Thuật toán: - B1Nhập n, a1,a2, …, an - B2: i 1, s  0, - B3: nếu chia hết cho thì s  s + B4: i i + - B5: nếu i > n, đưa S và TB rồi kết thúc - B6: quay lại bước  Chương trình: program tongboi5; uses crt; var n,i:byte; a:array[1 15] of integer; s:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n begin write('nhap phan tu a[',i,'] = '); readln(a[i]); end; s:=0; for i:=1 to n if a[i] mod = then s:=s+a[i]; writeln('tong cac phan tu chia het cho la: ',s); readln end (8) Kiểm tra tính nguyên tố của các phần tử mảng Input A= là số nguyên tố là số nguyên tố Output không phải là số nguyên tố là số nguyên tố không phải là số nguyên tố  Xác định bài toán: - Input: mảng a - Output: tổng các phần tử chẵn và TB cộng của các phần tử chẵn mảng  Thuật toán: - B1Nhập n, a1,a2, …, an - B2: i 1, - B3: nếu là nguyên tố thì thông báo là số nguyên tố - B4: ngược lại, thông báo không phải là số nguyên tố B5: ii+1; B6: nếu i > n, kết thúc B7: quay lại bước  Chương trình: program ktnguyento; uses crt; var a:array[1 15] of integer; n,i,j,d:byte; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n begin write('nhap phan tu a[',i,']= '); readln(a[i]); end; writeln(' '); for i:=1 to n begin d:=0; for j:=2 to (a[i] div 2) if a[i] mod j = then d:=d+1; if d=0 then writeln(a[i],' la so nguyen to') else writeln(a[i],' khong phai so nguyen to'); end; readln end (9) Có bao nhiêu phần tử mảng a có giá trị bằng k Input A1 = K=4d=2 Output K=6d=0  Xác định bài toán: - Input: mảng a, giá trị k - Output: số lượng phần tử mảng có giá trị bằng k  Thuật toán: B1Nhập n, a1,a2, …, an , k B2: i 1, d B3: nếu = k thì tăng d lên đơn vị d d +1 B4: ii+1; B5: nếu i > n, đưa d và kết thúc - B6: quay lại bước  Chương trình: program timkiem; uses crt; var a:array[1 15] of integer; n,i,d:byte; k:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n begin write('nhap phan tu a[',i,']= '); readln(a[i]); end; write(‘phan gia tri k = ’); readln(k); d:=0; for i:=1 to n if a[i]=k then d:=d+1; writeln(‘so luong phan tu mang co gia tri bang ’,k,’ la: ‘,d); readln end (10) 10.Tìm vị trí xuất hiện của giá trị X mảng a và thay thế X thành Y Input A = 7, x = 5, y =10 Output A = 10  Xác định bài toán: - Input: mảng a, giá trị k - Output: giá trị X mảng được thay thế bằng giá trị Y  Thuật toán: - B1Nhập n, a1,a2, …, an , x,y - B2: i - B3: nếu = x thì  y B4: ii+1; B5: nếu i > n, đưa mảng sau thay thế và kết thúc - B6: quay lại bước  Chương trình: program thaythe; uses crt; var a:array[1 15] of integer; n,i:byte; x,y:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n begin write('nhap phan tu a[',i,'] ='); readln(a[i]); end; write('mang moi nhap la: '); for i:=1 to n write(a[i]:4); writeln; write('nhap gia tri can tim: '); readln(x); write('nhap gia tri thay the: '); readln(y); for i:=1 to n if a[i]=x then a[i]:=y; write('mang sau thay the: '); for i:=1 to n write(a[i]:4); readln end (11) 11 Tim kiếm các căp phần tử gần co tổng chia hết cho 10 Thay thế các phần tử đo băng tổng của chúng Input A = 14 16 24 Output A = 10 10 30 30 24  Xác định bài toán: - Input: mảng a, giá trị k - Output: mảng a sau thay thế  Thuật toán: B1Nhập n, a1,a2, …, an , x,y B2: i B3: nếu + ai+1 chia hết cho 10 thì và ai+1 nhận giá trị mới là tổng của chúng B4: ii+1; - B5: nếu i > n, đưa mảng sau thay thế và kết thúc - B6: quay lại bước  Chương trình: program thaythe; uses crt; var a:array[1 15] of integer; n,i:byte; x,y:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n begin write('nhap phan tu a[',i,'] ='); readln(a[i]); end; write('mang moi nhap la: '); for i:=1 to n write(a[i]:4); writeln; for i:=1 to n if (a[i] +a[i+1]) mod 10 = then begin a[i]:=a[i]+a[i+1]; a[i+1]:=a[i]; end; write('mang sau thay the: '); for i:=1 to n write(a[i]:4); readln end (12) 12 Kiểm tra mảng co đối xứng hay không? A1 = Input A2 = A3 = 3 A1 không đối xứng Output A2 đối xứng A3 đối xứng  Xác định bài toán: - Input: mảng a, giá trị k - Output: thông báo mảng a có đối xứng hay không  Thuật toán: - B1Nhập n, a1,a2, …, an - B2: i 1, dx  true B3: nếu <> an-i+1 thì dx nhận giá trị mới là false B4: ii+1; - B5: nếu i > n, o B5.1: kiểm tra nếu dx = true thì tb mảng đối xứng và kết thúc o B5.2: dx = false thì thông báo mảng không đối xứng và kết thúc - B6: quay lại bước  Chương trình: program doixung; uses crt; var a:array[1 15] of integer; n,i:byte; dx:boolean; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n begin write('nhap phan tu a[',i,'] ='); readln(a[i]); end; write('mang moi nhap la: '); for i:=1 to n write(a[i]:4); writeln; dx:=true; for i:=1 to n if a[i] <> a[n-i+1] then dx:=false; if dx= true then writeln('day la mang doi xung') else writeln('day khong phai mang doi xung'); readln end (13) 13 Kiểm tra xem mảng a co phải la mảng tăng theo câp số công d hay không? A1 = A2 = 10 A1 không phải cấp số cộng Output A2 là cấp số cộng có công sai là Input  Xác định bài toán: - Input: mảng a, giá trị k - Output: thông báo mảng a có phải là cấp số cộng hay không?  Thuật toán: - B1Nhập n, a1,a2, …, an - B2: i 2, d  a2 – a1, csc  true B3: nếu <> ai-1 + d, thì csc  false B4: ii+1; - B5: nếu i > n, o B5.1: kiểm tra nếu csc = true thì tb mảng là cấp số cộng, kết thúc o B5.2: csc = false thì tb mảng không là cấp số cộng và kết thúc - B6: quay lại bước  Chương trình: program cscong; uses crt; var a:array[1 15] of integer; d:integer; n,i:byte; csc:boolean; begin clrscr; write('nhap so luong ptu cua mang '); readln(n); for i:=1 to n begin write('nhap phan tu a[',i,'] = '); readln(a[i]); end; write('mang moi nhap la: '); for i:=1 to n write(a[i]:4); writeln; d:=a[2]-a[1]; csc:=true; for i:=2 to n if (a[i]-a[i-1]<>d) then csc:= false; if csc=true then writeln('day la cap so cong co cong sai = ',d) else writeln('day khong la cap so cong'); readln end (14) 14 Chèn phần tử X vao vị trí k mảng Input A = 7, k = 3, x = 10 Output A = 10  Xác định bài toán: - Input: mảng a, giá trị k - Output: mảng a sau chèn  Thuật toán: - B1: Nhập n, a1,a2, …, an , x, k - B2: Chia mảng làm đôi, xuất mảng từ vị trí thứ nhất đến k -1 - B3: dịch chuyển các phần từ ở nửa cuối mảng đến i + - B4: tại vị trí k của mảng nhận giá trị x B5: Đưa mảng sau thay thế và kết thúc  Chương trình: program chenso; uses crt; var a:array[1 15] of integer; n,i,k:byte; x:integer; begin clrscr; write('nhap so luong phan tu: '); readln(n); for i:=1 to n begin write('nhap phan tu a[',i,'] ='); readln(a[i]); end; write('mang moi nhap la: '); for i:=1 to n write(a[i]:4); writeln; write('nhap vi tri can chen: '); readln(k); write('nhap gia tri can chen: '); readln(x); write('mang sau thay chen: '); for i:=1 to k-1 write(a[i]:4); for i:=n+1 downto k+1 a[i]:=a[i-1]; a[k]:=x; for i:=k to n+1 write(a[i]:4); readln end (15) Bài 12: Kiểu xâu: Bài 1: nhập vào xâu, đưa xâu có độ dài lớn hơn, và đưa xâu lớn S1 = ‘tin hoc’ S2 = ‘hoc tin hoc’ Xâu dài hơn: S2 = ‘hoc tin hoc’ Output Xâu lớn hơn: S1 = ‘tin hoc’  Ý tưởng: - So sánh hai xâu, xâu nào lớn thì xuất màn hình - So sánh hai xâu, xâu nào dài thì xuất màn hình  Chương trình: program sosanh; uses crt; var s1,s2:string; begin clrscr; write('Nhap xau thu nhat: '); readln(s1); write('Nhap xau thu hai: '); readln(s2); if s1> s2 then writeln(‘xau lon hon la:’,s1) else writeln(‘xau lon hon la:’,s2); if length(s1) > length(s2) then writeln(‘xau dai hon la:’,s1) else writeln(‘xau dai hon la:’,s2); readln end Input (16) Bài 2: nhập vào xâu, đếm số kí tự chữ số có xâu Input Nam sinh 21/10/1999 Output  Ý tưởng: - Khởi tạo một biến đếm d = - Lần lượt từ đầu xâu đến cuối xâu kiểm tra xem kí tự nào là số từ …9 nếu là số thì tăng biến đếm lên đơn vị  Chương trình: program demso; uses crt; var s1:string; i:byte; begin clrscr; write('nhap xau: '); readln(s1); d:=0; for i:=1 to length(s1) if ('0'<=s1[i]) and (s1[i]<='9') then d:=d+1; writeln('ket qua: ',d); readln end (17) Bai 3: nhâp vao xâu, kiểm tra xâu đo co phải la xâu đối xứng hay không? S1= ‘tin hoc’ S2= ‘tot’ S1 không đối xứng Output S2 là xâu đối xứng  Ý tưởng: - Khởi tạo xâu rỗng - Xâu rỗng vừa tạo lưu trữ xâu nhập vào theo thứ tự từ sau trước - Nếu xâu bằng thì xâu nhập vào là xâu đối xứng và ngược lại  Chương trình: program doixung; uses crt; var s1,s2:string; i:byte; begin clrscr; write('nhap xau: '); readln(s1); s2:=''; for i:=length(s1) downto s2:=s2+s1[i]; if s1 = s2 then writeln('day la xau doi xung') else writeln('day khong phai xau doi xung'); readln end Input (18) Bai 4: nhâp vao xâu, đưa man hinh các chư số co xâu Input Nam sinh nam 1999 – ki mao Output 1999  Ý tưởng: - Khởi tạo xâu rỗng - Lần lượt từ đầu xâu đến cuối xâu kiểm tra xem kí tự nào là số từ …9 nếu là số thì đưa vào xâu rỗng trên  Chương trình: program inso; uses crt; var s1,s2:string; i:byte; begin clrscr; write('nhap xau: '); readln(s1); s2:=''; for i:=1 to length(s1) if ('0'<=s1[i]) and (s1[i]<='9') then s2:=s2+s1[i]; writeln('ket qua: ',s2); readln end (19) Bai 5: nhâp vao xâu, chuyển xâu vưa nh âp xâu in hoa Input tin hoc Output TIN HOC  Ý tưởng: - Sử dụng câu lệnh chuyển chữ thường thành chữ hoa - Lần lượt từ đầu xâu đến cuối xâu và thực hiện chuyển chữ  Chương trình: program chuyenchu; uses crt; var s:string; i:byte; begin clrscr; write('nhap xau: '); readln(s); for i:=1 to length(s) s[i]:= upcase(s[i]); writeln('xau sau chuyen: ',s); readln end (20) Bài 6: nhập vào xâu, thay thế tất cả các cụm kí tự “anh” bằng cụm kí tự “em”  Ý tưởng: - Xác định vị trí của cụm kí tự anh - Xóa cụm kí tự anh - Chèn cụm kí tự em vào vị trí vừa xóa  Chương trình: program thaychu; uses crt; var s:string; i,vt:byte; begin clrscr; write('nhap xau: '); readln(s); while pos('anh',s)<>0 begin vt:=pos('anh',s); delete(s,vt,3); insert('em',s,vt); end; writeln('xau sau chuyen: ',s); readln end (21) Bài 7: nhập vào xâu, xóa các kí tự trắng thừa xâu (kí tự trắng thừa là kí tự ở đầu và cuối xâu, giữa hai từ có kí tự trắng) Input ‘ hoc tin hoc ’ Output ‘hoc tin hoc’  Ý tưởng: - Xóa kí tự trắng ở đầu và cuối dãy trước - Lần lượt từ đầu xâu đến cuối xâu nếu kí tự liền là kí tự trắng thì xóa bớt kí tự trắng  Chương trình: program xoatrang; uses crt; var st:string; i,n: byte; begin clrscr; write('Nhap xau: '); readln(st); n:=length(st); if st[1]=' ' then delete(st,1,1); if st[n]=' ' then delete(st,n,1); for i:=1 to n if (st[i]=' ') and (st[i+1]=' ') then delete(st,i,1); writeln('Ket qua la: ',st); readln end (22) Bài 8: nhập vào họ tên của người, điều chỉnh các kí tự đầu của các từ thành chữ in hoa Input kieu le quyen Output Kieu Le Quyen  Ý tưởng: - Tìm vị trí của các dấu cách - Chuyển kí tự tiếp theo sau dấu cách thành kí tự in hoa - Chuyển kí tự đầu tiên xâu thành kí tự in hoa  Chương trình: program doichu; uses crt; var st,ten:string; i: byte; begin clrscr; write('Nhap xau: '); readln(st); for i:=1 to length(st) if st[i]=' ' then st[i+1]:=upcase(st[i+1]); st[1]:=upcase(st[1]); writeln('ket qua la: ',st); readln end (23) Bài 9: nhập vào họ tên của người, đưa phần tên Input Kieu Le Quyen Output Quyen  Ý tưởng: - Tìm vị trí của dấu cách cuối cùng (vt) - Đếm số kí tự của phần tên (độ dài của tên: dai) Copy từ xâu vừa nhập dai kí tự từ vị trí vt  được tên  Chương trình: program tach_ten; uses crt; var st,ten:string; vt,dai,i: byte; begin clrscr; write('Nhap xau: '); readln(st); for i:=1 to length(st) if st[i]=' ' then vt:=i+1; dai:=length(st) - vt + 1; ten:=copy(st,vt,dai); writeln('Phan ten la: ',ten); readln end (24) Bài 10: Nhập vào một xâu, mã hóa xâu vừa nhập theo vòng tròn k =1 Input abc Output bcd  Ý tưởng: - Tìm vị trí của dấu cách cuối cùng (vt) - Đếm số kí tự của phần tên (độ dài của tên: dai) Copy từ xâu vừa nhập dai kí tự từ vị trí vt  được tên  Chương trình: program mahoa; uses crt; var st:string; i: byte; begin clrscr; write('Nhap xau: '); readln(st); for i:=1 to length(st) st[i]:= succ(st[i]); {giới thiệu thêm cho HS} writeln('ket qua sau ma hoa: ',st); readln end (25) Bài 11: nhập vào xâu, thông báo màn hình chữ cái có xâu và số lượng của chúng.(không phân biệt chữ hoa, chữ thường); Input ‘hoc tin hoc’ H:2 O:2 C:2 Output T:1 I:1 N:1  Ý tưởng: - Khởi tạo một mảng dem để đếm các kí tự - Chuyển kí tự dãy thành kí tự in hoa - Đi từ đầu xâu đến cuối xâu so xâu vừa nhập với bảng chữ cái in hoa, nếu xuất hiện kí tự nào thì thực hiện đếm kí tự đó - Kí tự có xâu thì biến đếm kí tự đó > Từ điều kiện này ta xuất màn hình kí tự và số lượng kí tự có xâu  Chương trình: program demkitu; Uses Crt; Var St:String; dem: Array['A' 'Z'] Of Byte; i:Byte; ch:Char; Begin clrscr; Write('Nhap xau St: '); Readln(St); For ch:='A' To 'Z' Do dem[ch]:=0; For i:=1 To Length(St) Do If (Upcase(St[i]) >='A') and (Upcase(St[i]) <='Z') Then dem[Upcase(St[i])]:=dem[Upcase(St[i])] +1; For ch:='A' To 'Z' Do If dem[ch]>0 Then Writeln(ch,' : ',dem[ch]); Readln; End (26)

Ngày đăng: 08/10/2021, 12:51

w