Các dạng bài tập về xử lý mảng một chiều
Mảng là một tập hợp dữ liệu có cùng kiểu. Mảng trong C là một cấu trúc dữ liệu cơ bản và quan trọng. Show
Trong chương này, chúng ta sẽ tìm hiểu các bài tập và các chương trình C liên quan tới mảng, từ chương trình đơn giản nhất để in mảng, tính tổng giá trị các phần tử trong mảng, … cho đến các bài tập liên quan đến nhiều mảng trong C. Dưới đây là danh sách các bài tập cơ bản về mảng một chiều trong C. Với các bài tập này, chúng ta sẽ làm quen dần với cách xử lý các biến mảng trong các tình huống khác nhau. Dưới đây là các bài tập liên quan tới nhiều mảng trong C. Với các bài tập này, bạn sẽ làm quen dần với một số kỹ thuật đơn giản để đồng thời xử lý nhiều biến mảng trong ngôn ngữ C. Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS. Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube: Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học. Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi. Một số bài tập lập trình PascalVấn đề 3: Mảng 1 chiềuBài toán số 3.1: Nhập xuất và tính tổng các phần tử trong mảng.Ví dụ: A: 1 5 6 7 4 Kết quả: Tong S = 23 Hướng dẫn: Để giải quyết bài toán cần phải đảm bảo các vấn đề:
Chương trình:{ 1. Cac khai bao cho chuong trinh } Program Mang1C; Uses crt; Type Mang20 = array[1..20] of Integer; Var N:Integer; A:Mang20; { 2. Thu tuc nhap mang A voi N la so phan tu } Procedure NhapMang1C(Var A : Mang20 ;Var N:Integer); Var i: Integer; Begin Write( 'So luong phan tu:' ); Readln( N); For i:=0 to N do Begin Write( 'Nhap phan tu thu ', i,'' ); Readln( A[i] ); End; End; { 3. Thu tuc xuat mang A voi N la so phan tu } Procedure XuatMang1C( Var A : Mang20;Var N :Integer ); Var i:Integer; Begin For i :=0 to N do Write( A[i]:2 ); Writeln; End; { 4. Chuong trinh con tinh tong cac phan tu trong mang } Function TongMang1C( A : Mang20; N:Integer):longint; Var i :Integer; S :longint; Begin S := 0; For i:=0 to N do S := S + A[i] ; TongMang1C:=S; End; { 5. Than chuong trinh chinh } BEGIN NhapMang1C( A, N ); XuatMang1C( A, N ); Writeln(' Tong cac phan tu trong mang ', TongMang1C(A, N) ); Readln; END. Bài toán tương tự:(1) Tính tổng các số nguyên dương chia hết cho 5. Function TongSoChiaHet5( A:Mang20, N:Integer):Integer; Var S,i :Integer; Begin S:=0; For i:=0 to N do If(A[i] mod 5=0) S := S+A[i]; TongSoChiaHet5:= S; End; (2) Tính tổng các số nguyên tố trong mảng Function LaSoNT( Var N:Integer) :Integer; Var i:Integer; Begin For i:=2 to N-1do If(N mod i = 0) then return 0 Else return 1; End; Function TongSoNT(Var A : Mang20, Var N:Integer):Integer; Var S,i:Integer; Begin S:=0; For i:=0 to Ndo If ( LaSoNT( A[i] ) ) then S :=S+ A[i]; TongSoNT :=S; End; Bài toán số 3.2: Đếm số lần xuất hiện của giá trị X trong mảng A. Đếm số lần xuất hiện của các phần tử trong mảng.Ví dụ: A: 1 5 6 7 4 1 5 5 1 1 X: 6 Kết quả: So lan xuat hien X la 1 So lan xuat hien cua cac phan tu: 1 ==> 4 5 ==> 3 6 ==> 1 7 ==> 1 4 ==> 1 1 ==> 4 ……. Hướng dẫn:
Các hàm xây dựng:{ 1. Dem so phan tu A[i] trong mang bang gia tri X } Function DemPtuX(Var A : Mang20; N, X : Integer) : Integer; Var i , Count : Integer; Begin Count := 0; For i:=0 to N do If ( A[i] = X ) then Count := Count + 1; DemPtuX := Count; End; { 2. Dem so lan xuat hien cua tat ca cac phan tu trong mang } Procedure InSoLanXHcuaPTu( A:Mang20; N: Integer); Var i :Integer; Begin For i:=0 to N do Writeln( A[i] ,' ===> ', DemPtuX( A, N, A[i] ) ); End; Source code chương trình chính:BEGIN Clrscr; NhapMang1C( A, N ); XuatMang1C( A, N ); Write( 'Gia tri X:' ); Readln( X ); Writeln( 'So lan xuat hien trong A la:', DemPtuX(A, N, X) ); InSoLanXHcuaPTu ( A, N ); Readln; END . Cải tiến: Không in ra các phần tử được lặp lại. Hướng dẫn: Đối với mỗi phần tử, trước khi in, kiểm tra xem nó xuất hiện trước nó hay không.
Mở rộng: In ra phần tử xuất hiện ít nhất và nhiều nhất trong mảng. Bài toán số 3.3: Tìm kiếm và thay thế. Tìm kiếm vị trí xuất hiện của x trên mảng A. Thay thế những giá trị Ai là x thành y.Ví dụ: A: 1 5 6 7 4 1 5 5 1 1 X=5 Y=15 Kết quả: Vi tri xuat hien X la 1 Ket qua thay the: 1 15 6 7 4 1 15 15 1 1 Hướng dẫn:
Các hàm xây dựng:{ 1. Ham tim kiem gia tri X trong mang A voi N phan tu } Function TimKiem ( A:Mang20; N:Integer; X:Integer ):Boolean; Var Flag : Boolean; i:Integer; Begin Flag:=False; For i:=0 to N do Begin If (A[i] = x) then Begin Flag:=True; Break; {Tim thay ==> Tra ve vi tri tim thay } End; End; TimKiem:=Flag; End; { 2. Thay the phan tu X dau tien tim thay trong mang bang gia tri Y } Function ThayThe(Var A:Mang20;Var N, x, y:Integer):Integer; Var i:Integer; Begin For i:=0 to N do If (A[i] = x) then Begin A[i] := y; { Tim thay x ==> thay the thanh y } Break; { Cham dut qua trinh thay the} End; ThayThe := i; End; { 3. Thay the tat ca cac phan tu co gia tri X tim thay bang gia tri Y } Procedure ThayTheTatCa (Var A:Mang20; Var N, x,y:Integer); Var i:Integer; Begin For i:=0 to N do If(A[i] = x) then { Tim thay x ==> thay the thanh y } A[i] := y; End; Source code chương trình chính BEGIN NhapMang1C(A, N); { Ham nhap xuat khong lam lai nua } XuatMang1C(A, N); { Su du let qua o truoc } Write('Gia tri x:'); Readln(x); If (TimKiem(A,N,x)) then Writeln( 'Tim thay tai vi tri trong mang A.', x, k ) Else Writeln( 'Khong tim thay trong mang A', x ); Write('gia tri y:'); Readln(y); ThayThe(A, N, x, y); Writeln('Ket qua thay the ',x, y); XuatMang1C(A, N); ThayTheTatCa(A, N, x, y); Writeln('Ket qua thay the tat ca la:',x, y); XuatMang1C(A, N); Readln; END. Mở rộng:+ Tìm kiếm các cặp 2 phần tử gần nhau có tổng chia hết cho 10. Thay thế các phần tử đó bằng tổng của chúng. Ví dụ: A: 1 19 62 7 8 32 12 Ket qua: 20 20 62 7 40 40 12 Procedure ThayTheBangTong(Var A:Mang20; N:Integer; X, Y:Integer); Var i,k:Integer; Begin For i:=0 to N do If( (A[i-1]+A[i]) mod 10 = 0) then Begin k := (A[i-1]+A[i]); A[i-1] := k; A[i] := k; End; End; Bài toán số 3.4: Kiểm tra mảng có đối xứng hay không? Kiểm tra mảng có tăng dần hay không?Mảng đối xứng là mảng có phần tử Ai = AN-i-1 Nếu mảng không phải là mảng tăng dần, hãy sắp xếp nó thành mảng tăng dần. Ví dụ: Mảng A: 1 15 6 7 4 7 6 15 1 Kết quả: Mang A doi xung, Mang A khong phai la mang tang dan Mảng A: 2 5 6 7 14 17 26 26 31 Kết quả: Mang A khong doi xung, Mang A khong phai la mang tang dan Hướng dẫn:
Các hàm xây dựng:{ 1. Ham kiem tra mang doi xung } Function KtraDoiXung (A:Mang20; N:Integer ) : Boolean; Var Flag:Boolean; i :Integer; Begin Flag:=True; For i :=1 to N do If(A[i] <> A[N-i +1]) Then Flag :=False; { Cham dut kiem tra, ket qua qua trinh : khong doi xung } KtraDoiXung :=Flag; End; { 2. Ham kiem tra mang tang } Function KtraMangTang ( A:Mang20; N :Integer) : Boolean; Var Flag : Boolean; i :Integer; Begin Flag := True; For i :=1 to N do If(A[i] < A[i-1]) Then Flag :=False; { Cham dut kiem tra, ket qua qua trinh : khong tang } KtraMangTang :=Flag; End; { 3. Thu tuc sap xep mang tang } Function SxepMangTang (A:Mang20; N:Integer ):Integer; Var i ,j,k :Integer; Begin For i :=1 to N do For j :=1 to N do If ( (i Mở rộng:
Function SxepDuongTangAmGiam ( A[]:Mang20, N:Integer ); Var i ,j ,k:Integer; Begin For i:=1 to N do For j:=1 to N do If ( ( (i |