• Không có kết quả nào được tìm thấy

Một số bài tập mảng 1 chiều

N/A
N/A
Protected

Academic year: 2022

Chia sẻ "Một số bài tập mảng 1 chiều"

Copied!
1
0
0

Loading.... (view fulltext now)

Văn bản

(1)

Chuyên đề I

Phơng pháp cài đặt một số phép toán trên mảng một chiều.

...*****...

I. Bài tập :

Nhập vào một dãy n số nguyên A[1],A[2],...,A[n] . Đọc ra màn hình các thông tin sau : 1. Tổng các phần tử của dãy.

2. Số lợng các số hạng dơng và tổng của các số hạng dơng.

3. Số lợng các số hạng âm và tổng của các số hạng âm.

4. Trung bình cộng của cả dãy. Trung bình cộng các phần tử dơng của mảng. Trung bình cộng các phần tử

âm của mảng.

5. Chỉ số của số hạng dơng đầu tiên của dãy.

6. Chỉ số của số hạng âm đầu tiên của dãy.

7. Chỉ số của số hạng dơng cuối cùng của dãy.

8. Chỉ số của số hạng âm cuối cùng của dãy.

9. Số hạng lớn nhất của dãy và chỉ số của nó.

10. Số hạng nhỏ nhất của dãy và chỉ số của nó.

11. Số hạng âm lớn nhất của dãy và chỉ số của nó.

12. Số hạng dơng nhỏ nhất của dãy và chỉ số của nó.

13. Giá trị lớn thứ nhì của dãy và các chỉ số của các số hạng đạt giá trị lớn nhì.

14. Giá trị nhỏ thứ nhì của dãy và các chỉ số của các số hạng đạt giá trị nhỏ nhì.

15. Số lợng các số dơng liên tiếp nhiều nhất.

16. Số lợng các số hạng dơng liên tiếp có tổng lớn nhất.

17. Số lợng các số hạng âm liên tiếp nhiều nhất.

18. Số lợng các số hạng âm liên tiếp có tổng lớn nhất.

19. Số lợng các số hạng liên tiếp đan dấu nhiều nhất ( dãy số hạng liên tiếp đợc gọi là đan dấu nếu tích hai số liên tiếp âm ).

20. Số lợng các phần tử không tăng nhiều nhất.

21. Số lợng các phần tử giảm nhiều nhất.

22. Số lợng các phần tử tăng nhiều nhất.

23. Đoạn con dơng liên tiếp có nhiều các số hạng nhất (nếu có nhiều đoạn con thoả mãn thì đọc ra màn hình : số đoạn con thoả mãn và các đoạn con đó )

24. Đoạn con gồm nhiều nhất các số hạng liên tiếp của dãy lập thành một cấp số cộng. nhất (nếu có nhiều

đoạn con thoả mãn thì đọc ra màn hình : số đoạn con thoả mãn và các đoạn con đó )

25. Đoạn con có các số hạng dơng liên tiếp có tổng lớn nhất. nhất (nếu có nhiều đoạn con thoả mãn thì đọc ra màn hình : số đoạn con thoả mãn và các đoạn con đó )

26. Đoạn con có các số hạng âm liên tiếp nhiều nhất. nhất (nếu có nhiều đoạn con thoả mãn thì đọc ra màn hình : số đoạn con thoả mãn và các đoạn con đó )

27. Đoạn con có số hạng âm liên tiếp có tổng lớn nhất. nhất (nếu có nhiều đoạn con thoả mãn thì đọc ra màn hình : số đoạn con thoả mãn và các đoạn con đó )

28. Đoạn con có các số hạng liên tiếp đan dấu nhiều nhất nhất (nếu có nhiều đoạn con thoả mãn thì đọc ra màn hình : số đoạn con thoả mãn và các đoạn con đó )

29. Đoạn con có các phần tử không tăng nhiều nhất. nhất (nếu có nhiều đoạn con thoả mãn thì đọc ra màn hình : số đoạn con thoả mãn và các đoạn con đó )

30. Đoạn con có các phần tử giảm nhiều nhất. nhất (nếu có nhiều đoạn con thoả mãn thì đọc ra màn hình : số

đoạn con thoả mãn và các đoạn con đó )

31. Số lợng các phần tử bằng giá trị X ( nguyên ) cho trớc.

32. Số lợng các phần tử khác giá trị X ( nguyên ) cho trớc.

33. Số lợng các phần tử >= giá trị X ( nguyên ) cho trớc.

34. Chuyển các số hạng dơng của mảng lên đầu mảng và in mảng ra màn hình.

35. Tìm số phần tử là dơng và là số nguyên tố của mảng và vị trí của nó trong mảng 36. Sắp xếp tăng dần mảng đã cho (a[i]<=a[i+1] )

37. Sắp xếp giảm dần mảng đã cho (a[i]>=a[i+1] )

38. Chèn một số nguyên m (m nhập vào từ bàn phím ) vào cuối dãy 39. Chèn một số nguyên m (m nhập vào từ bàn phím ) vào đầu dãy 40. Chèn một số nguyên m ( m nhập vào từ bàn phím ) vào vị trí k .

41. Chèn một số nguyên m ( m nhập vào từ bàn phím ) vào vị trí thích hợp . VD: m =5 dãy đã cho sau khi sắp xếp lại là : 1 2 3 4 6

Thì dãy sau khi chèn là: 1 2 3 4 5 6

(2)

42. Tìm số phần tử là dơng và là số đối xứng thập phân của mảng và vị trí của nó trong mảng.

...

II . phơng pháp:

Câu: 5, 6, 7, 8:

Dùng toán tử :WHILE DO i:=1;

While ((i<=n)and(a[i]<=0)) Do inc(i);

Ra khỏi vòng lặp i chính là vị trí của số dơng đầu tiên . Câu 9: Số hạng lớn nhất của dãy và chỉ số của nó.

Gán Max:=a[1] so sánh từng phần tử của mảng với Max nếu Max < a[i]

thì gán cho Max:=a[i].

Câu: 10,11,12

Tơng tự câu 9 Câu 13 : Tìm lớn nhì .

Tìm Min, Max .Gán cho Biến lớn nhì( Ln) Ln:=Min duyệt mảng

(Chú ý ĐK : if (Ln<a[i]) and (a[i]<> max) then Ln:= a[i]; )

* Duyệt lại mảng để lu lại vị trí của phần tử lớn nhì

Câu 14 : Tìm nhỏ nhì .

Tơng tự câu 13

Câu 15 : Số lợng các số dơng liên tiếp nhiều nhất.

{So luong so hang duonglien tiep nhieu nhat}

uses crt;

var a:array[1..100] of longint;

i,n,sld,j,max:integer;

BEGIN clrscr;

write('Vao n=');readln(n);

for i:=1 to n do

begin write('a[',i,']=');readln(a[i]);end;

i:=1; max:=0;

While i<=n do if a[i]>0 then begin

sld:=0; j:=i;

while ((j<=n)and(a[j]>0)) do begin

inc(sld);

inc(j);

end;

if sld>max then max :=sld;

inc(i,sld);

end

Else inc(i);

writeln('So luong duong lien tiep nhieu nhat la:',max);

readln;

END.

Câu 16: Số lợng các số hạng dơng liên tiếp có tổng lớn nhất.

uses crt;

var a:array[1..100] of longint;

i,n,sld,j,maxtd,sldtln,d:longint;

BEGIN clrscr;

write('Vao n=');readln(n);

for i:=1 to n do

begin write('a[',i,']=');readln(a[i]);end;

i:=1; maxtd:=-maxlongint;sldtln:=0;

While i<=n do if a[i]>0 then

(3)

begin

sld:=0;j:=i;d:=0;

while ((j<=n)and(a[j]>0)) do begin

inc(sld);

inc(d,a[j]);

inc(j) end;

if d>maxtd then

begin maxtd :=d;sldtln:=sld;end;

inc(i,sld);

end

Else inc(i);

writeln('So luong so hang duong lien tiep co tong lon nhat la:',sldtln);

readln;

END.

...

Câu 18: Tơng tự câu 17

Câu 19:

uses crt;

var a:array[1..100] of longint;

i,n,sl,j,max:longint;

BEGIN clrscr;

write('Vao n=');readln(n);

for i:=1 to n do

begin write('a[',i,']=');readln(a[i]);end;

i:=1; max:=0;

While i<=n-1 do

if a[i]*a[i+1]<0 then begin

sl:=1;j:=i;

while ((j+1<=n)and(a[j]*a[j+1]<0)) do begin

inc(sl);

inc(j) end;

if sl>max then max:=sl;

inc(i,sl); { quay ve de xet tiep cac doan con lai}

end Else inc(i);

writeln('So luong so hang dan dau nhieu nhat la:',max);

readln;

END.

...

Câu 20 , 21, 22 : Cài tơng tự nh các câu trên .

Câu 23 : Đoạn con dơng liên tiếp có nhiều các số hạng nhất (nếu có nhiều đoạn con thoả mãn thì đọc ra màn hình : số đoạn con thoả mãn và các đoạn con đó )

VD:

program Doan_Con_Duong;

uses crt;

var A:array[1..100]of longint;

D,C:array[1..100] of byte;

n,i,j,k,max,d1,h:longint;

begin clrscr;

repeat write('Nhap so phan tu cua mang n= ');readln(n);until N>0;

for i:=1 to n do begin write('A[',i,']=');readln(A[i]);end;

i:=1;k:=0;

while i<=n do begin

while (i<=n)and(A[i]<=0) do inc(i); {tim vi tri dau tien cua doan con duong}

j:=i; {luu lai vi tri ban dau cua day con}

(4)

while (i<=n)and(A[i]>0) do inc(i);

if i-j>max then max:= i-j;

if i-1-j>=1 then begin inc(k); D[k]:=j;C[k]:=i-1;end;

end;

if k=0 then writeln('Khong co doan con duong nao trong mang ! ') else begin

writeln('Co ',k,' doan con duong ! ');

for i:=1 to k do

if c[i]-d[i]+1=max then inc(d1);

writeln('Co ',d1,' doan con duong lon nhat do la:');

for i:=1 to k do begin

if c[i]-d[i]+1=max then begin

inc(h);

write('Doan con duong lon nhat thu ',h,'la :') ; for j:=D[i] to C[i] do write(A[j],' ');

end;

writeln;

end;

end;

readln end.

tes: n=10; 12 3 0 3 4 5 -7 8 6 4 Thông báo ra màn hình nh sau:

KQ:

Co 3 doan con duong

Co 2 doan con duong lon nhat

doan con duong lon nhat thu 1 la: 3 4 5 Doan con duong lon nhat thu 2 la: 8 6 4

...

Câu : 25 đến câu 30 cài tơng tự câu 23.

Câu : 35 Tìm số phần tử là dơng và là số nguyên tố của mảng.

{HAM NGUYEN TO}

uses crt;

var a:array[1..100] of longint;

i,n:integer;

{function nt(n:longint):boolean;

var i:longint;

begin

nt:=False;

for i:=2 to TRUNC(SQRT(n)) do if n mod i = 0 then exit;

nt:=True;

end;}

function NT(n:longint):boolean;

var i,j:longint;

begin NT:=true;

if (( n=2)or(n=3))then begin nt:=true;exit;end;

if(( n=1)or(n mod 2=0)or(n mod 3=0))then begin nt:= false; exit;end;

if n<25 then exit;

i:=5;j:=2;

while i<= TRUNC(SQRT(n)) do begin

if n mod i=0 then begin nt:=false;exit;end;

inc(i,j);j:=6-j;

end;

end;

BEGIN clrscr;

(5)

write('Vao n=');readln(n);

for i:=1 to n do begin write('a[',i,']=');readln(a[i]);end;

for i:=1 to n do if ((a[i]>0)and nt(a[i])) then write(a[i],' ');

readln;

END.

Câu 38, 39, 40: Chèn một số nguyên m (m nhập vào từ bàn phím ) vào cuối , đầu, vị trí k và vị trí thích hợp của dãy .

program Chen;

uses crt;

Const Max=1000;

Type Day=array[1..Max] of longint;

Var A:Day;

N,i,k, m:integer;

BEGIN Clrscr;

Write('So phan tu cua day so la N=');readln(N);

Writeln('Nhap cac phan tu cua day so');

For i:=1 to N do Begin

Write('A[',i,']=');readln(A[i]);

End;

Write('Nhap vao phan tu can chen vao cuoi day so da cho la:');

Readln(m);

inc(N);

A[N]:=m;

For i:=1 to N do write(A[i]:8:2);

Readln;

inc(N);

For i:=N downto 2 do A[i]:=A[i-1];

A[1]:=m;

For i:=1 to N do write(A[i]:8:2);

Readln;

Repeat {}

Write('Vi tri thu k can chen la :');readln(k);

Until (k>=1)and(k<=N);

inc(N);

For i:=N downto k+1 do A[i]:=A[i-1]; {Keo}

A[k]:=m;

For i:=1 to N do write(A[i]:8:2);

Readln;

END.

Câu 40: Tự cài

T tởng của thuật toán là:

 Sắp xếp tăng dần

 Tìm vị trí thích hợp lu vào biến (vt)

 Tăng n lên 1 ( Inc(n))

 Kéo

 Gán a[vt]:=m;

 Thông báo ra màn hình.

...

Câu 42: Tìm số phần tử là dơng và là số đối xứng thập phân của mảng và vị trí của nó trong mảng.

T tởng của thuật toán là:

Cách1:

 Duyệt từng phần tử của mảng (số hạng của dãy)

 Với mỗi số đó ta lu từng chữ số của số đó vào một mảng B

 Nếu mảng B có nhiều hơn một phần tử thì ta kiểm tra phần tử đầu tiên với phần tử cuối cùng .Tiếp tục kiểm tra phần tử thứ 2 với gần cuối ..( tổng quát a[j]=a[k-j+1]).Quá trình lặp lại đến điểm giữa của dãy ( điều kiện của vòng lặp :j<=k div 2) .

Cách2 :

 Dùng hàm mũ tính ngợc lại ta đợc một số

(6)

 Nếu số này bằng phần tử mà ta đang xét thì thông báo là số đối xứng Cách3 :

 Đổi số cần kiểm tra ra xâu

 Đảo xâu

 Kiểm tra hai xâu bằng nhau thì số đó là số đối xứng

...

{ Chơng trình cài theo cách 1 }

program dxtp;

Uses Crt;

Var luu, n,i,j,d,k: integer;

dx: boolean;

a:array[1..100] of longint;

b: array[1..10] of 0..9;

BEGIN Clrscr;

Write('N='); Readln(N);

for i:=1 to n do

begin write('a[',i,']=');readln(a[i]);end;

for i:=1 to n do begin

k:=0; luu:=a[i];

While (luu>0) do Begin

inc(k);

b[k]:=luu mod 10;

luu:=luu div 10;

End;

j:=1;

dx:=true;

If k>1 then

While (j<=k div 2) and dx do Begin

dx:=(b[j]=b[k-j+1]); inc(j);

End;

If dx then inc(d);

end;

writeln('Trong mang co ',d,' so doi xung');

Readln;

End.

...

Cách2 :

program dxtp;

Uses Crt;

Var luu, i,j,d,k,h,t,n: longint;

dx: boolean;

a:array[1..100] of longint;

b: array[1..10] of 0..9;

function MU(a,n:longint):longint;

begin

if n=0 then mu:=1 else MU:=a*MU(a,n-1);

end;

Begin Clrscr;

Write('N='); Readln(N);

for i:=1 to n do

begin write('a[',i,']=');readln(a[i]);end;

d:=0;

for i:=1 to n do begin

(7)

k:=0;t:=0;

luu:=a[i];

While (luu>0) do Begin

inc(k);

b[k]:=luu mod 10;

luu:=luu div 10;

End;

if k> 1 then begin

for h:= 1 to k do t:=t+ b[h]*mu(10,k-h);

if t=a[i] then inc(d);

end;

end;

if d=0 then writeln(‘trong mang khong co so doi xung ’) Else writeln('Co tat ca ',d, 'so doi xung');

readln;

End.

...

Cách 3 :

program dxtpc3;

Uses Crt;

Var i,d,n: longint;

a:array[1..100] of longint;

st:string;

function DOIXUNG(s:string):boolean;

var s1:string; i,m,n,kt1,kt2:integer;

begin s1:='';

for i:= length(s) downto 1 do s1:=s1+s[i];

val(s1,m,kt1);val(s,n,kt2);

if m=n then DOIXUNG:=true else DOIXUNG:=false;

end;

BEGIN Clrscr;

Write('N='); Readln(N);

for i:=1 to n do

begin write('a[',i,']=');readln(a[i]);end;

for i:=1 to n do begin

str(a[i],st);

if doixung(st) then inc(d);

End;

if d=0 then write('Trong mang khong co so doi xung!') Else writeln('Co tat ca ',d, 'so doi xung');

readln;

End.

...

III Bài tập : ớc số -số nguyên tố.

1/ Cho trớc số tự nhiên n. Lập trình phân tích số n thành tích các thừa số nguyên tố.

2/ Cho trớc số tự nhiên n. Tìm số Mersen <=n (số nguyên tốMersen có dạng 2

p

-1, p là nguyên tố).

3/ Đọc ra các số nguyên tố sinh đôi trong đoạn (m,n) ( số nguyên tố mà khoảng cách giữa chúng =2)

4/ Cho số tự nhiên n . Tìm các số <=n là tích đúng 2 thừa số nguyên tố có thể trùng nhau ( 3 thừa số nguyên tố). 5/ Đọc ra tất cấc số hoàn thiện < n (số bằng tổng các ớc thực sự ).

6/ Đọc ra tất cấc số gần hoàn thiện < n (số gần hoàn thiện là số không phải hoàn thiện nhng sau khi đục bỏ một chữ số bất kỳ nào đó và giữ nguyên vị trí và bỏ đi chữ số 0 ở đầu nếu có thì nó trở thành số hoàn thiện ).

7/ Tìm tất cả các cặp số nguyên tố cùng nhau trong khoảng m,n (UCLN=1) 8/ Cho n tính tổng các ớc số nguyên tố của n .

9/ Đọc ra tất cặp số nguyên tố tơng trong khoảng n,m (hai số đợc gọi là nguyên tố tơng đơng nếu chúng có

chung các ớc nguyên tố) .

(8)

10/ Tìm số tự nhiên nhỏ nhất <> n và nguyên tố tơng đơng với n . 11/ Tìm số nhỏ nhất <10000 không có ớc nguyên tố nào khác 3,5,7 12/ Tìm số nhỏ nhất >10000 không có ớc nguyên tố nào khác 3,7,11

13/ Đọc ra tất cả các sô gần nguyên tố lớn nhất nhỏ hơn N (n<1000000) (số gần nguyên tố là số không “ ” phải nguyên tố nhng sau khi sắp xếp lại các chữ số bỏ đi các chữ số 0 vo nghĩa ở đấu nếu có thì nó trở thành số nguyên tố) .

14/ Đọc ra tất cả các số siêu nguyên tố có m chữ số .Có bao nhiêu số ? Số nà xuất hiện trong tất cả các số siêu nguyên tố đó?

...

Yên Lạc ngày 25 tháng 7 năm 2005 Ngời T.H .C.Đ

Nguyễn Mạnh Hùng

Tài liệu tham khảo

Tài liệu liên quan

Thứ ba, luật pháp, chính sách về bình đẳng giới, về phòng chống bạo lực gia đình mặc dù đã được ban hành khá đầy đủ, nhưng việc thực hiện trong thực

cÊp sè céng... cÊp

NÕu tæng cña chóng kh«ng lµ sè Palindrom th× lÆp l¹i qu¸ tr×nh trªn víi tæng ®ã cho ®Õn khi nhËn ®îc mét sè Palindrom.. Cho tríc mét m¶ng N sè nguyªn

Đồng thời, chưa có một nghiên cứu tổng thể làm rõ vấn đề chẩn đoán, điều trị các bệnh lý còn ống phúc tinh mạc thì phẫu thuật nội soi sẽ chỉ định kỹ thuật nào phù hợp với

Xuất phát từ tầm quan trọng và ý nghĩa trên, chúng tôi tiến hành thực hiện đề tài “Nghiên cứu tình trạng sức khỏe răng miệng, nhu cầu điều trị và đánh giá hiệu quả một

Lµ chÊt liÖu truyÒn thèng, gi÷ vÞ trÝ quan träng trong nÒn héi ho¹ ViÖt Nam.. * Mét sè t¸c phÈm

®Èy thuyÒn ®i mét gãc nhän ng−îc víi chiÒu giã thæi.. Ng−êi ta cßn gäi tÝch cña vect¬ víi mét sè lμ tÝch cña mét sè víi mét vect¬.. Bμi to¸n sau cho ta c¸ch ph©n

a. Tính lương glucôzơ cần để điều chế 1lít dung dịch rượu êtylic 40 o. §a sè kh«ng tan trong c¸c dung m«i th«ng th-êng, mét sè tan trong dung m«i thÝch hîp t¹o dung