bài tập giúp bạn bổ sung kiến thức về mảng một chiều cũng như các kĩ năng lập trình cơ bản choi người mới bắt đầu lập trình
Trang 1Bài 1: CT nhập và xuất mảng 1 chiều, In mảng theo thứ tự ngược.
PROGRAM BAITAP1;
VAR a: Array[1 100] of INTEGER;
I, n : INTEGER;
BEGIN
WRITE(‘ NHAP SO PHAN TU CUA MANG n= ’);
READLN(N);
FOR i:=1 TO n DO
begin
WRITE(‘ NHAP PHAN TU THU a[‘,i,’]= ’);
READLN(a[i]);
End;
WRITELN;
WRITE(‘MANG VUA NHAP:’);
FOR i:=1 TO n DO
WRITE(a[i]:4);
WRITELN;
WRITE(‘IN MANG THEO THU TU NGUOC’);
FOR i:=n DOWNTO 1 DO
WRITE(a[i]:4);
WRITELN;
READLN;
END
*******************************************************************************
Bài 2: CT nhập mảng 1 chiều sau đó sắp xếp mảng theo thứ tự
a Tăng dần
b Giảm dần
PROGRAM BAITAP2;
VAR a: Array[1 100] of INTEGER;
I, n, j, tam : INTEGER;
BEGIN
WRITE(‘ NHAP SO PHAN TU CUA MANG n= ’);
READLN(N);
FOR i:=1 TO n DO
begin
WRITE(‘ NHAP PHAN TU THU a[‘,i,’]= ’);
READLN(a[i]);
End;
WRITELN;
WRITE(‘MANG TRUOC KHI SAP XEP:’);
FOR i:=1 TO n DO
WRITE(a[i]:4);
Trang 2Write( ‘CT SAP XEP MANG THEO THU TU TANG DAN’);
FOR i:=1 TO n - 1 DO
For j:= i+1 to n do
IF a[i]>a[j] then Begin
Tam:= a[i];
a[i]:= a[j];
a[j]:= Tam;
end;
WRITE(‘MANG SAU KHI SAP XEP TANG DAN:’);
FOR i:=1 TO n DO
WRITE(a[i]:4);
WRITELN;
Write( ‘CT SAP XEP MANG THEO THU TU GIAM DAN’);
FOR i:=1 TO n - 1 DO
For j:= i+1 to n do
IF a[i]<a[j] then Begin
Tam:= a[i];
a[i]:= a[j];
a[j]:= Tam;
end;
WRITE(‘MANG SAU KHI SAP XEP GIAM DAN:’);
FOR i:=1 TO n DO
WRITE(a[i]:4);
WRITELN;
READLN;
END
*******************************************************************************
Bài 3: CT nhập mảng 1 chiều, sau đó tìm phần tử lớn nhất và nhỏ nhất và vị trí của chúng trong mảng.
PROGRAM BAITAP3;
VAR a: Array[1 100] of INTEGER;
I, n, Max, Min, VitriMax, VitriMin : INTEGER;
BEGIN
WRITE(‘ NHAP SO PHAN TU CUA MANG n= ’);
READLN(N);
FOR i:=1 TO n DO
begin
WRITE(‘ NHAP PHAN TU THU a[‘,i,’]= ’);
READLN(a[i]);
Trang 3WRITELN;
WRITE(‘MANG VUA NHAP:’);
FOR i:=1 TO n DO
WRITE(a[i]:4);
WRITELN;
Max:=a[1]; VitriMax:=1;
Min:=a[1]; VitriMin:=1;
Writeln;
For i:=1 to n do
If Max< a[i] then
Begin
Max:= a[i];
VitriMax:= i;
End;
Writeln;
For i:=1 to n do
If Min> a[i] then
Begin
Min:= a[i];
VitriMin:= i;
End;
Writeln;
Writeln(‘ Phan tu co GTLN cua mang la:’, Max);
Writeln(‘ No nam o vi tri:’, VitriMax);
Writeln(‘ Phan tu co GTNN cua mang la:’, Min);
Writeln(‘ No nam o vi tri:’, VitriMin);
Writeln;
Readln;
END
*******************************************************************************
Bài 4: CT nhập mảng 1 chiều, sau đó đếm số lần xuất hiện các:
a Số 0
b Số dương.
c Số âm.
d Số chẵn.
e Số lẻ.
PROGRAM BAITAP4;
VAR a: Array[1 100] of INTEGER;
I, n, dem, demduong, demam, demchan, demle : INTEGER;
BEGIN
WRITE(‘ NHAP SO PHAN TU CUA MANG n= ’);
Trang 4FOR i:=1 TO n DO
begin
WRITE(‘ NHAP PHAN TU THU a[‘,i,’]= ’);
READLN(a[i]);
End;
WRITELN;
WRITE(‘MANG VUA NHAP:’);
FOR i:=1 TO n DO
WRITE(a[i]:4);
WRITELN;
Dem:=0; Demduong:=0; Demam:=0; Demchan:=0; Demle:=0;
Writeln;
For i:=1 to n do
If a[i]=0 then Dem:=Dem +1 Else
If a[i]>0 then
Demduong:=Demduong +1 Else
Demam:=Demam +1;
Writeln;
For i:=1 to n do
If (a[i] mod 2)= 0 then
Demchan:=Demchan +1 Else
Demle:=Demle +1;
Writeln;
If Dem>0 then
Write(‘Co ‘, dem,’ so 0 trong mang’) Else
Write(‘Khong co so 0 nao trong mang’);
Writeln;
If Demduong>0 then
Write(‘Co ‘,demduong,’ so duong trong mang’) Else
Write(‘Khong co so duong nao trong mang’);
Writeln;
If Demam>0 then
Write(‘Co ‘,demam,’ so am trong mang’) Else
Write(‘Khong co so am nao trong mang’);
Trang 5If Demchan>0 then
Write(‘Co ‘,demchan,’ so chan trong mang’) Else
Write(‘Khong co so chan nao trong mang’);
Writeln;
If Demle>0 then
Write(‘Co ‘,demle,’ so le trong mang’) Else
Write(‘Khong co so le nao trong mang’);
Readln;
END
**************************************************************************
Bài 5: CT nhập mảng 1 chiều, sau đó chèn thêm một số x vào một vị trí bất kỳ trong mảng.
PROGRAM BAITAP5;
VAR a: Array[1 100] of INTEGER;
I, n, x, Vitri : INTEGER;
BEGIN
WRITE(‘ NHAP SO PHAN TU CUA MANG n= ’);
READLN(N);
FOR i:=1 TO n DO
begin
WRITE(‘ NHAP PHAN TU THU a[‘,i,’]= ’);
READLN(a[i]);
end;
WRITELN;
WRITE(‘MANG TRUOC KHI CHEN:’);
FOR i:=1 TO n DO
WRITE(a[i]:4);
WRITELN;
Write(‘Can chen so x=’);
Readln(x);
Write(‘Vao vi tri:’);
Reradln(Vitri);
Writeln;
For i:= n+1 Downto Vitri+1 do
a[i]:=a[i-1];
a[Vitri]:=x;
Trang 6Write(‘MANG SAU KHI CHEN’);
For i:=1 to n do
Write(a[i]);
Writeln;
Readln;
END
**************************************************************************************************
Bài 6: CT nhập mảng 1 chiều, sau đó xóa một phần tử tại một vị trí bất kỳ trong mảng.
PROGRAM BAITAP6;
VAR a: Array[1 100] of INTEGER;
I, n, Vitri : INTEGER;
BEGIN
WRITE(‘ NHAP SO PHAN TU CUA MANG n= ’);
READLN(N);
FOR i:=1 TO n DO
begin
WRITE(‘ NHAP PHAN TU THU a[‘,i,’]= ’);
READLN(a[i]);
end;
WRITELN;
WRITE(‘MANG TRUOC KHI XOA:’);
FOR i:=1 TO n DO WRITE(a[i]:4);
WRITELN;
Write(‘Nhap vi tri muon xoa:’);
Reradln(Vitri);
Writeln;
For i:=Vitri +1 to n-1 do
a[i]:=a[i+1];
n:=n-1;
Write(‘MANG SAU KHI XOA’);
For i:=1 to n do Write(a[i]);
Writeln;
Readln;
END
*******************************************************************************
Trang 7Bài 7: CT nhập mảng 1 chiều sau đó nhập một số x Kiểm tra số x vừa nhập có nằm trong mảng hay không Nếu có thì in vị trí của phần tử đó trong mảng Nếu tìm được ở nhiều vị trí thì In vị trí đầu tiên tìm được.
PROGRAM BAITAP5;
VAR a: Array[1 100] of INTEGER;
I, n, x : INTEGER;
BEGIN
WRITE(‘ NHAP SO PHAN TU CUA MANG n= ’);
READLN(N);
FOR i:=1 TO n DO
begin
WRITE(‘ NHAP PHAN TU THU a[‘,i,’]= ’);
READLN(a[i]);
end;
WRITELN;
WRITE(‘MANG VUA NHAP:’);
FOR i:=1 TO n DO
WRITE(a[i]:4);
WRITELN;
Write(‘ Nhap so can tim x=’);
Readln(x);
Writeln;
i:=1;
While ((i<=n) and (a[i]<>x)) do
i:=i+1;
If i<= n then
begin Write(‘ Phan tu x= ’,x,’ vua nhap co trong mang’);
Write(‘ No nam o vi tri:’, i);
end Else
Write(‘ Phan tu x= ’,x,’ vua nhap khong co trong mang’);
Writeln;
Readln;
END
*******************************************************************************
Bài 8: CT nhập mảng 1 chiều Sau đó nhập một số x Kiểm tra số x vừa nhập có nằm trong mảng hay không Nếu có thì in vị trí của phần tử đó trong mảng Nếu tìm được ở nhiều vị trí thì In tất cả các vị trí tìm được.
PROGRAM BAITAP5;
Trang 8VAR a: Array[1 100] of INTEGER;
b: Array[1 100] of INTEGER;
i, n, x : INTEGER;
BEGIN
WRITE(‘ NHAP SO PHAN TU CUA MANG n= ’);
READLN(N);
FOR i:=1 TO n DO
begin
WRITE(‘ NHAP PHAN TU THU a[‘,i,’]= ’);
READLN(a[i]);
end;
WRITELN;
WRITE(‘MANG VUA NHAP:’);
FOR i:=1 TO n DO WRITE(a[i]:4);
WRITELN;
Write(‘ Nhap so can tim x=’);
Readln(x);
Writeln;
Dem:=0;
FOR i:=1 TO n DO
If a[i] = x then
begin
Dem:=Dem +1;
b[dem]:=i end;
If dem>0 then
begin Write(‘ Phan tu x = ’,x,’ vua nhap co trong mang’);
Write(‘ No nam o cac vi tri:’);
FOR i:=1 TO n DO Write(b[i] :4);
end Else
Write(‘ Phan tu x= ’,x,’ vua nhap khong co trong mang’);
Writeln;
Readln;
END
*******************************************************************************
Bài 9: CT nhập mảng 1 chiều Sau đó
a In các phần tử dương của mảng.
b In các phần tử âm của mảng.
Trang 9c In các phần tử chẵn của mảng.
d In các phần tử lẻ của mảng.
PROGRAM BAITAP9;
VAR a: Array[1 100] of INTEGER;
b: Array[1 100] of INTEGER;
i, n, demduong, demam, demchan, demle : INTEGER;
BEGIN
WRITE(‘ NHAP SO PHAN TU CUA MANG n= ’);
READLN(N);
FOR i:=1 TO n DO
begin
WRITE(‘ NHAP PHAN TU THU a[‘,i,’]= ’);
READLN(a[i]);
end;
WRITELN;
WRITE(‘MANG VUA NHAP:’);
FOR i:=1 TO n DO WRITE(a[i]:4);
WRITELN;
Demduong:= 0;
For i:= 1 to n do
If a[i]>0 then
begin
Demduong:= Demduong + 1;
b[demduong]:= a[i];
and;
If Demduong >0 then Writeln(‘ Cac phan tu duong trong mang la:’);
FOR i:=1 TO demduong DO WRITE(b[i]:4);
Writeln;
Demam:= 0;
For i:= 1 to n do
If a[i] < 0 then
begin
Demam:= Demam + 1;
b[demam]:= a[i];
and;
If Demam >0 then Writeln(‘ Cac phan tu am trong mang la:’);
FOR i:=1 TO demam DO
Trang 10WRITE(b[i]:4);
Writeln;
Demchan:= 0;
For i:= 1 to n do
If (a[i] mod 2) = 0 then
begin
Demchan:= Demchan + 1;
b[demchan]:= a[i];
and;
If Demchan >0 then Writeln(‘ Cac phan tu chan trong mang la:’);
FOR i:=1 TO demchan DO WRITE(b[i]:4);
Writeln;
Demle:= 0;
For i:= 1 to n do
If (a[i] mod 2) = 1 then
begin
Demle:= Demle + 1;
b[demle]:= a[i];
and;
If Demle >0 then Writeln(‘ Cac phan tu le trong mang la:’);
FOR i:=1 TO demle DO WRITE(b[i]:4);
Writeln;
Readln;
END
*******************************************************************************
Bài 10: CT nhập mảng 1 chiều Sau đó tính
a Tổng các phần tử của mảng
b Tổng các phần tử dương của mảng
c Tổng các phần tử âm của mảng
d Tổng các phần tử chẵn của mảng
e Tổng các phần tử lẻ của mảng
(Tương tự tính tổng bình phương, tổng lập phương)
PROGRAM BAITAP10;
VAR a: Array[1 100] of INTEGER;
i, n, tong, tongduong, tongam, tongchan, tongle : INTEGER;
BEGIN
WRITE(‘ NHAP SO PHAN TU CUA MANG n= ’);
Trang 11FOR i:=1 TO n DO
begin
WRITE(‘ NHAP PHAN TU THU a[‘,i,’]= ’);
READLN(a[i]);
end;
WRITELN;
WRITE(‘MANG VUA NHAP:’);
FOR i:=1 TO n DO WRITE(a[i]:4);
WRITELN;
Tong:= 0;
For i:=1 to n do
Tong:= Tong + a[i];
Writeln(‘ Tong cac phan tu cua mang la:’, Tong);
Writeln;
Tongduong:= 0;
For i:=1 to n do
If a[i] >0 then
Tongduong:= Tongduong + a[i];
Writeln(‘ Tong cac phan tu duong cua mang la:’, Tongduong);
Writeln;
Tongam:=0;
For i:=1 to n do
If a[i] <0 then
Tongam:= Tongam + a[i];
Writeln(‘ Tong cac phan tu am cua mang la:’, Tongam);
Writeln;
Tongchan:= 0;
For i:=1 to n do
If (a[i] mod 2) = 0 then
Tongchan:= Tongchan + a[i];
Writeln(‘ Tong cac phan tu chan cua mang la:’, Tongchan);
Writeln;
Tongle:= 0;
For i:=1 to n do
If (a[i] mod 2) = 1 then
Tongle:= Tongle + a[i];
Writeln(‘ Tong cac phan tu le cua mang la:’, Tongle);
Writeln;
Readln;
END