57
Chuyên đề mng 1 chi u Y!m :nhatquai.theboy Kĩ thut nhp xut mng 128/ Vi ế t hàm nhp mng 1 chi u các sthc void NhapMang(float a[], int &n) { printf("Nhap so phan tu: "); scanf ("% d",&n); for (int i=0;i<n;i++) { printf("Nhap a[% d]: ", i); scanf("% f", &a[i]); } } 129/ Vi ế t hàm nhp mng 1 chi u các snguyê n void NhapMang(int a[], int &n) { printf("Nhap so phan tu: "); scanf ("% d",&n); for (int i=0;i<n;i++) { printf("Nhap a[% d]: ", i); scanf("% d", &a[i]); } } 130/ Vi ế t hàm xut mng 1 chi u các sthc void XuatMang(float a[], int n) { for (int i=0;i<n;i++) { printf(" % .2f ", a[i]); } } 131/ Vi ế t hàm xut mng 1 chi u các snguyê n void XuatMang(int a[], int n) { for (int i=0;i<n;i++) { printf("% 4d", a[i]); } } 132/ Vi ế t hàm lit kê các giá trchn trong mng 1 chi u các snguyê n . void LietKeGiaTriChan(int a[], int n) { for (int i=0;i<n;i++) { if(a[i ]% 2==0) printf("% 4d",a[i]); } } 133/ Vi ế t hàm lit kê các vtrí mà giá trtại đó là giá trị âm trong mng 1 chi u . void LietKeViTriAm(int a[], int n) { for (int i=0;i<n;i++) { if(a[i]<0) printf("% 4d",i); } }

Khoahoctunhien.net mang1chieu

Embed Size (px)

DESCRIPTION

rat hay

Citation preview

Page 1: Khoahoctunhien.net mang1chieu

Chuyên đề mảng 1 chiều

Y!m :nhatquai.theboy Kĩ thuật nhập xuất mảng

128/ Viết hàm nhập mảng 1 chiều các số thực

void NhapMang(float a[], int &n)

{

printf("Nhap so phan tu: ");

scanf ("% d",&n);

for (int i=0;i<n;i++)

{

printf("Nhap a[% d]: ", i);

scanf("% f", &a[i]);

}

}

129/ Viết hàm nhập mảng 1 chiều các số nguyên

void NhapMang(int a[], int &n)

{

printf("Nhap so phan tu: ");

scanf ("% d",&n);

for (int i=0;i<n;i++)

{

printf("Nhap a[% d]: ", i);

scanf("% d", &a[i]);

}

}

130/ Viết hàm xuất mảng 1 chiều các số thực

void XuatMang(float a[], int n)

{

for (int i=0;i<n;i++)

{

printf(" % .2f ", a[i]);

}

}

131/ Viết hàm xuất mảng 1 chiều các số nguyên

void XuatMang(int a[], int n)

{

for (int i=0;i<n;i++)

{

printf("% 4d", a[i]);

}

}

132/ Viết hàm liệt kê các giá trị chẵn trong mảng 1 chiều các số nguyên .

void LietKeGiaTriChan(int a[], int n)

{

for (int i=0;i<n;i++)

{

if(a[i ]% 2==0)

printf("% 4d",a[i]);

}

}

133/ Viết hàm liệt kê các vị trí mà giá trị tại đó là giá trị âm trong mảng 1 chiều .

void LietKeViTriAm(int a[], int n)

{

for (int i=0;i<n;i++)

{

if(a[i ]<0)

printf("% 4d",i);

}

}

Page 2: Khoahoctunhien.net mang1chieu

Kĩ thuật đặt lính canh các bt cơ bản

134/ Viết hàm tìm giá trị lớn nhất trong mảng 1 chiều các số thực

float lonnhat(float a[],int n)

{

float lc=a[0];

for (int i=0;i<n;i++) {

if(a[i]>lc)

lc=a[i];

}

return lc;

}

135/ Tìm Giá trị dương đầu tiên trong mảng 1 chiều các số thực. Nếu mảng ko có giá trị dương thì

trả về giá trị -1

float duongdau(float a[], int n)

{

for (int i=0; i<n; i++)

{

if (a[i]>0)

{

return a[i];

}

}

return -1;

}

136/ Tìm Số chẵn cuối cùng trong mảng 1 chiều các số nguyên. Nếu mảng ko có giá trị chẵn thì trả

về giá trị -1 . int chancuoi(int a[] , int n)

{

for(int i=n-1; i>=0; i--)

{

if(a[i ]% 2==0)

{

return a[i];

}

}

return -1;

}

137/ Tìm 1 vị trí mà giá trị tại đó là giá trị nhỏ nhất trong mảng 1 chiều các số thực

float vitrinhonhat(float a[],int n)

{

int lc=0; for(int i=0;i<n;i++)

{

if(a[i]<a[lc])

}

138/ Tìm Vị trí của giá trị chẵn đầu tiên trong mảng một chiều các số nguyên. Nếu mảng ko có giá

trị chẵn thì trả về giá trị -1 .

int vitrichandau(int a[] , int n)

{

for(int i=0; i<n; i++)

{

if(a[i ]% 2==0)

{

return i;

}

Page 3: Khoahoctunhien.net mang1chieu

}

return -1;

}

139/ Tìm vị trí số hoàn thiện cuối cùng trong mảng 1 chiều các số nguyên. Nếu mảng ko có số hoàn

thiện thì trả về giá trị -1 .

int sohoanthien(int n)

{

int tong=0;

for (int i=1 ; i<n; i++)

if(n% i==0)

tong = tong + i;

if (tong == n)

return 1;

return 0;

}

int vitrihoanthiencuoi(int a[],int n)

{

for(int i=n-1; i>=0; i--)

if(sohoanthien(a[i]==1)

return i;

return -1;

}

140/ Hãy tìm giá trị dương nhỏ nhất trong mảng các số thực. Nếu mảng không có giá trị dương thì

trả về giá trị là -1 . float DuongNhoNhat(float a[], int n)

{

float min;

int dem= 0;

for (int i=0; i<n; i++)

{

if(a[i ]>0)

{

dem ++;

break;

}

}

if (dem !=0)

{

min = a[i];

for (i=i+1; i<n; i++)

{

if((a[i]>0)&&(min>a[i ]))

{

min = a[i ];

}

}

return min;

}

return -1;

}

141/ Hãy tìm vị trí dương nhỏ nhất trong mảng 1 chiều các số thực. nếu mảng ko có giá trị dương

thì trả về 1 giá trị ngoài đoạn [0,n-1] là -1 nhằm mô tả ko có vị trí nào thỏa điều kiện. int vtduongnhonhat(float *A, int n)

{

int min;

int dem =0 ;

for (int i=0; i<n; i++)

{

if(A[i ]>0)

{

dem++;

min = i;

Page 4: Khoahoctunhien.net mang1chieu

break;

}

}

if (dem == 0)

return -1;

for (i=i+1; i<n; i++)

{

if((A[i]>0)&&(A[min]>A[i]))

{

min = i;

}

}

return min;

}

Các bt luyện tập

142/ Tìm Giá trị nhỏ nhất trong mảng 1 chiều các số thực . float NhoNhat(float a[], int n)

{

float min = a[0];

for (int i=1; i<n; i++)

{

min = (min>a[i])?a[i]:min;

}

return min;

}

143/ Viết hàm tìm chẵn đầu tiên trong mảng các số nguyên. Nếu mảng ko có giá trị chẵn thì hàm trả về -1 .

int ChanDau(int a[],int n)

{

for(int i=0; i<n; i++)

{

if(a[i ]% 2==0)

{

return a[i];

}

}

return -1;

}

144/ Tìm số nguyên tố đầu tiên trong mảng 1 chiều các số nguyên. Nếu mảng không có số nguyên tố thì trả về giá trị -1 .

int intto(int n)

{

if (n>=2)

{

for (int i=2; i<n; i++)

if (n% i==0)

return 0;

return 1;

}

return 0;

}

int nguyentodau(int a[], int n)

{

for(int i=0; i<n; i++)

{

if(intto(a[i])==1)

{

return a[i];

}

}

return -1;

}

Page 5: Khoahoctunhien.net mang1chieu

145/ Tìm Số hoàn thiện đầu tiên trong 1 chiều các số nguyên. Nếu mảng ko có số hoàn thiện thì trả

về giá trị -1. int sohoanthien(int n)

{

int tong=0;

for (int i=1 ; i<n; i++)

if(n% i==0)

tong = tong + i;

if (tong == n)

return 1;

return 0;

}

int hoanthiendau(int a[],int n)

{

for(int i=0; i<n; i++)

if(sohoanthien(a[i])==1)

return a[i];

return -1;

}

146/ Tìm giá trị âm đầu tiên trong mảng 1 chiều các số thực. nếu mảng ko có giá trị âm thì trả về

giá trị là 1 . float AmDau(float a[], int n)

{

for (int i=0; i<n; i++)

{

if (a[i])<0)

{

return a[i];

}

}

return 1;

}

147/ Tìm số dương cuối cùng trong mảng số thực. Nếu mảng ko có giá trị dương thì trả về giá trị -1

.

float DuongCuoiCung(float a[], int n)

{

for (int i=n-1; i>=0; i --)

{

if (a[i]>0)

{

return a[i];

}

}

return -1;

}

148/ Tìm số nguyên tố cuối cùng trong mảng 1 chiều các số nguyên. Nếu mảng ko có số nguyên tố

thì trả về giá trị -1 . int nguyentocuoi(int a[],int n)

{

for(int i=n-1; i>=0; i--)

{

if(intto(a[i])==1)

{

return a[i];

}

}

return -1;

}

149/ Tìm số hòan thiện cuối cùng trong mảng 1 chiều các số nguyên. Nếu mảng ko có số hòan thiện thì hàm trả về giá trị -1 .

Page 6: Khoahoctunhien.net mang1chieu

int hoanthiencuoi(int a[],int n)

{

for(int i=n-1; i>=0; i--)

{

if(sohoanthien(a[i])==1)

{

return a[i];

}

}

return -1;

}

150/ Hãy tìm giá trị âm lớn nhất trong mảng các số thực. Nếu mảng ko có giá trị âm thì trả về giá trị 0 .

float AmMax(float a[], int n)

{

float max;

int dem =0;

for (int i=0; i<n; i++)

{

if(a[i ]<0)

{

dem++;

break;

}

}

if (dem ==0)

{

return 0;

}

else

{

max = a[i];

for (i=i+1; i<n; i++)

{

if((a[i]<0)&&(max<a[i]))

{

max = a[i];

}

}

return max;

}

}

151/ hãy tìm số nguyên tố lớn nhất trong mảng 1 chiều. Nếu mảng ko có thì trả về giá trị 0 int nguyentolonnhat(int a[],int n)

{

int dem=0;

int max;

for(int i=0; i<n; i++)

{

if(intto(a[i])==1)

{

dem ++;

max = i ;

break;

}

}

if (dem ==0)

{

return 0;

}

else

{

for (i=i+1; i<n; i++)

{

if ((intto(a[i])==1) && (a[max]<a[i]))

{

max = i ;

Page 7: Khoahoctunhien.net mang1chieu

}

}

}

return max;

}

152/ hãy tìm số hòan thiện nhỏ nhất trong mảng 1 chiều các số nguyên. Nếu mảng ko có trả về 0 .

int hoanthiennhonhat(int a[],int n)

{

int dem=0;

int min;

for(int i=0; i<n; i++)

{

if(sohoanthien(a[i])==1)

{

dem ++;

min = i;

break;

}

}

if (dem ==0)

{

return 0;

}

else

{

for (i=i+1; i<n; i++)

{

if ((sohoanthien(a[i])==1) && (A[min]>a[i]))

{

min = i;

}

}

}

return min;

}

153/ Hãy tìm giá trị chẵn nhỏ nhất trong mảng 1 chiều các số nguyên. Nếu ko có trả về -1 . int channhonhat(int a[],int n)

{

int dem=0;

int min;

for(int i=0; i<n; i++)

{

if(a[i ]% 2==0)

{

dem ++;

min = i;

break;

}

}

if (dem ==0)

{

return -1;

}

else

{

for (i=i+1; i<n; i++)

{

if ((a[i]% 2==0) && (a[min]>a[i]))

{

min = i;

}

}

}

return min;

}

Page 8: Khoahoctunhien.net mang1chieu

154/ hãy tìm vị trí giá trị âm lớn nhất trong mảng số thực . ko có thì trả về -1 . int VTriAmMax(float a[], int n)

{

int VTmax = -1;

for (int i=0; i<n; i++)

{

if(a[i ]<0)

{

VTmax = i;

break;

}

}

for (i=i+1; i<n; i++)

{

if((a[i]<0)&&(a[VTmax]<a[i]))

{

VTmax = i;

}

}

return VTmax;

}

Bài tập luyện tư duy

155/ hãy tìm giá trị trong mảng các số thực xa giá trị x nhất .

void kcxanhat(float *A , int n , float x )

{

double kcxn = (fabs)(A[0] - x);

int j = 0;

for(int i = 0 ; i < n ; i++)

{

i f((fabs)(A[i]-x) > kcxn)

{

kcxn = (fabs)(A[i] - x);

j = i ;

}

}

printf("Gac gia tri xa % .2f nhat la :",x);

for(j ; j < n ; j++)

{

if((fabs)(A[j] - x) == kcxn)

{

printf("% .2f ",A[j]);

}

}

printf("\n");

}

156/ hãy tìm 1 vị trí trong mảng chiều các số thực mà giá trị tại vị trí đó là giá trị gần giá trị x nhất .

void vi trigannhat(float *A , int n , float x)

{

double kcgn = (fabs )(A[0] - x);

int j = 0;

for(int i = 0 ; i < n ; i++)

{

if((fabs)(A[i ] - x) < kcgn)

{

kcgn = (fabs)(A[i] - x);

j = i ;

}

}

printf("Cac vi tri co gia tri gan % .2f nhat la :",x);

for(j;j<n;j++)

{

if((fabs)(A[j] - x) == kcgn)

Page 9: Khoahoctunhien.net mang1chieu

{

printf("% d",j);

}

}

printf("\n");

}

157/ hãy tìm đoạn [a,b] sao cho đoạn này chứa tất cả các giá trị trong mảng .

void timdoan(st* A, int n)

{

st max = *A;

st min = *A;

for (int i=1; i<n; i++)

{

max = (max<*(A+i))?max:*(A+i);

min = (min>*(A+i))?min:*(A+i);

}

printf("\t[ % .1f , % .1f ] la doan chua cac gia tri trong mang\n", max, min);

}

158 hãy tìm giá trị x sao cho đoạn [-x,x] chứa tất cả các giá trị trong mảng . float timx(float* A, int n)

{

float x = *A;

for (int i=1; i<n; i++)

{

x = (x>(fabs)(*(A+i)))? x : (fabs )(*(A+i));

}

return x;

}

159/ hãy tìm giá trị đầu tiên lớn hơn giá trị 2003. Nếu mảng ko có giá trị thỏa thì hàm trả về giá trị

là 0 . float dautien(float *A , int n)

{

for(int i = 0 ; i < n;i++)

{

i f(A[i] > 2003)

{

return A[i];

}

}

return 0;

}

160/ hãy tìm giá trị âm cuối cùng lớn hơn giá trị -1 trong mảng số thực. Nếu ko có thì hàm trả về 0 . float cuoicung(float *A , int n)

{

for(n;n>=0;n--)

{

if(A[n] > -1 && A[n] < 0)

{

return A[n];

}

}

return 0.0 ;

}

161/ hãy tìm giá trị đầu tiên nằm trong khỏang (x,y) cho trc. Nếu ko có trả về giá trị x .

[FONT="]int dautientrongdoan(int a[], int n, int x, int y)[/FONT]

[FONT="]{[/FONT]

[FONT="] int dem =0;[/FONT]

[FONT="] for(int i=0; i<n;i++)[/FONT]

[FONT="] {[/FONT]

[FONT="] if ((a[i]>=x)&&(a[i ]<=y))[/FONT]

[FONT="] {[/FONT]

[FONT="] dem++;[/FONT]

Page 10: Khoahoctunhien.net mang1chieu

[FONT="] break;[/FONT]

[FONT="] }[/FONT]

[FONT="] }[/FONT]

[FONT="] if (dem == 0)[/FONT]

[FONT="] {[/FONT]

[FONT="] return x;[/FONT]

[FONT="] }[/FONT]

[FONT="] return a[i];[/FONT]

[FONT="]}[/FONT]

162/ hãy tìm 1 vị trí trong mảng số nguyên thỏa 2 điều kiện: có giá trị lân cận và giá trị tại đó bằng

tích 2 giá trị lân cận. Nếu ko có trả về -1 .

int bai162(float a[], int n)

{

int i=1;

for (;i<n-1;i++)

{

if (a [i]==((a[i -1])*a[i+1]))

{

return i;

}

}

return -1;

}

163/ tìm số chính phương đầu tiên trong mảng 1 chiều số ngyên .

int sochinhphuong(int a)

{

for (int i=1; i<a; i++)

{

if (i*i == a)

{

return 1;

}

}

return 0;

}

int chinhphuongdautien(int *A, int n)

{

for (int i=0; i<n; i++)

{

if (sochinhphuong(*(A+i))==1)

{

return *(A+i);

}

}

return -1;

}

164/ Cho mảng số ng. Hãy tìm giá trị đầu tiên thỏa tính chất số gánh (ví dụ: 12321) .

int soganh(int n)

{

int t=n;

int dv,dn=0;

while (t!=0)

{

dv=t% 10;

dn=dn*10+dv;

t=t/10;

}

if ( n = = dn)

{

return 1;

}

return 0;

}

int bai164(int a[], int n)

Page 11: Khoahoctunhien.net mang1chieu

{

for (int i=0; i<n; i++)

{

if (soganh(a[i])==1)

{

return a[i];

}

}

return -1;

}

165/ Hãy tìm giá trị đầu tiên có chữ số đầu tiên là chữ số lẻ. Ko có trả về 0 (ví dụ: 110) int chusodau(int n)

{

int dv;

while (n>=10)

{

dv=n% 10;

n=n/10;

}

if (n% 2==0)

return 0;

return 1;

}

int dauledautien(int a[], int n)

{

for(int i=0 ; i<n; i++)

{

if ( chusodau(a[i])==1)

{

return a[i];

}

}

return 0;

}

166/ hãy tìm giá trị đầu tiên trong mảng có dạng 2^k. ko có thì trả về 0 .

int dang2k(int n)

{

int du;

if (n==1)

{

return 1;

}

do

{

du = n % 2 ;

if (du != 0)

{

return 0;

}

n = n/2;

} while (n>=2);

return 1;

}

int bai166(int a[], int n)

{

for(int i=0 ; i<n; i++)

{

if (dang2k(a[i ])==1)

{

return a[i];

}

}

return 0;

}

Page 12: Khoahoctunhien.net mang1chieu

167/ Tìm giá trị toàn là chữ số lẻ và lớn nhất trong những số thỏa điều kiện. ko có trả về 0 int toanchusole(int n)

{

int dv;

while (n!=0)

{

dv = n % 10;

if (dv % 2 == 0)

{

return 0;

}

n=n/10;

}

return 1;

}

int bai167(int a[], int n)

{

int max;

int dem =0;

for(int i=0 ; i<n; i++)

{

if (toanchusole(a[i])==1)

{

max = a[i];

dem ++;

break;

}

}

if (dem == 0)

{

return 0;

}

for(; i<n; i++)

{

if (toanchusole(a[i])==1)

{

max = ( max>a[i ]) ? max : a[i] ;

}

return max;

}

168/ Hãy tìm giá trị lớn nhất trỏng mảng có dạng 5^k. Nếu mảng không tồn tại thì trả về 0 int dang5k(int n)

{

int du;

if (n==1)

return 1;

while (n>=5)

{

du = n% 5;

n=n/5;

if (du != 0)

return 0;

}

return 1;

}

int bai168(int a[], int n)

{

int max;

int dem =0;

for(int i=0 ; i<n; i++)

{

if (dang5k(a[i ])==1)

{

max = a[i]; dem ++; break;

}

}

Page 13: Khoahoctunhien.net mang1chieu

if (dem == 0)

{

return 0;

}

for(;i<n; i++)

{

if (dang5k(a[i ])==1)

{

max = (max>a[i])?max:a[i] ;

}

}

return max;

}

169/ Hãy tìm số chẵn lớn nhất nhỏ hơn mọi giá trị lẻ có trong mảng nguyên int lenhonhat(int a[], int n)

{

int min ;

int dem= 0;

for (int i=0; i<n ; i++)

{

if (a[i]% 2 !=0)

{

min = a[i];

dem ++;

break;

}

}

if (dem ==0)

return 0;

for (i ; i<n; i++)

if (a[i]% 2!=0 && min>a[i ])

min = a[i];

return min;

}

int bai169(int a[], int n)

{

int lemin = lenhonhat(a,n);

if (lemin == 0)

return -1;

return lemin - 1;

}

170/ Tìm số nguyên tố nhỏ nhất lớn hơn mọi giá trị trong mảng nguyên .

int lonnhat(int a[], int n)

{

int max = a[0];

for(int i=1; i<n; i++)

{

max=(max>a[i ]) ? max :a[i];

}

return max;

}

int intto(int a)

{

for (int i=2; i<a; i++)

{

if (a% i==0)

return 0;

}

return 1;

}

int bai170(int a[], int n)

{

int max = lonnhat(A, n);

for (int i = max + 1; i>max; i++)

{

Page 14: Khoahoctunhien.net mang1chieu

if (intto(i) == 1)

break;

}

return i;

}

171 Hãy tìm ước chung lớn nhất của tất cả ptử trong mảng nguyên . int sonhonhat(int a[], int n)

{

int min = a[0];

for (int i=1; i<n; i++)

min = (min < a[i])? min: a[i];

return min;

}

void uocsocuamin(int a[], int n, int b[], int &m , int min)

{

m = 0;

for (int i=1; i<=min; i++)

{

if (min % i == 0)

{

b[m]=i;

m++;

}

}

}

int uocsocuamang(int a[], int b[], int n, int m)

{

for (int i=0; i<n ; i++)

{

if(a[i ]% b[m-1] !=0)

{

m--;

i=-1;

}

if (m <0)

return 1;

}

return b[m-1];

}

172/ Hãy tìm bội số chung nhỏ nhất trong mảng nguyên . int solonnhat(int A[], int n)

{

int max=A[0];

for (int i=1; i<n; i++)

{

if ((max == 0)||(A[i]==0))

{

printf("Ban da vi pham loi the doi voi bai nay\n");

exit (0);

}

max=max>A[i]?max:A[i];

}

return max;

}

int boichungcuamang(int A[], int n, int max)

{

int boiso = max ;

for (int i=0; i<n; i++)

{

if (boiso % A[i] != 0)

{

boiso = boiso + max;

i=-1;

}

}

return boiso;

Page 15: Khoahoctunhien.net mang1chieu

}

173 * Hãy viết hàm tìm chữ số xuất hiện ít nhất trong mảng . int ChuSo(int a[], int n)

{

int i,So[10]={0},donvi,temp;

for (i=0;i<n;i++)

{

temp = abs(a[i]);

do

{

donvi = temp% 10;

temp = temp/10;

So[donvi]++;

} while (temp!=0);

}

int VTMax = 0;

for (i=0; i<10 ; i++)

{

VTMax = (So[VTMax]>So[i ])?VTMax:i;

}

return VTMax;

}

174 * Hãy viết hàm liệt kê các cẵp giá trị (a,b) trong mảng thỏa đk a<=b . void LietKe(int a[], int n)

{

int i,j;

for (i=0;i<n;i++)

{

for (j=i+1;j<n;j++)

{

if (a[i]<a[j] || a[i]==a[j])

{

printf("\nCap <% d,% d> vi tri <a[% d],a[% d]>",a[i],a[j],i ,j);

}

}

}

}

175 * Hãy viết hàm tìm 2 giá trị gần nhau nhất trong mảng.

void LietKe(int a[], int n)

{

int i,j,kcgn = (abs)(a[0] - a[1]);

for (i=0;i<n;i++)

{

for (j=i+1;j<n;j++)

{

if ((abs)(a[i ]-a[j])<kcgn)

{

kcgn = (abs)(a[i]-a[j]);

}

}

}

printf("Nhung cap gia tri gan nhau nhat: \n");

for (i=0;i<n;i++)

{

for (j=i+1;j<n;j++)

{

if ((abs)(a[i ]-a[j])==kcgn)

{

printf("\t<% d,% d> vi tri <a[% d],a[% d]>\n",a[i],a[j],i,j);

}

}

}

}

Page 16: Khoahoctunhien.net mang1chieu

Các bài tập tìm kiếm và liệt kê 176/Liệt kê các số âm trong mảng số thực .

void xuatk q(float a[],int m)

{

for (int i=0;i<m;i++)

{

if (a[i]<0)

printf(" % .2f ", a[i]);

}

}

177/ Liệt kê các số trong mảng thực thuộc [x,y] cho trước .

void LietKetTrongDoanXY(float a[], int n, float x, float y)

{

for (int i=0; i<n; i++)

{

if (x<=a[i] && a[i]<=y)

{

printf(“% .2f",a[i]);

}

}

}

178 Liệt kê các số chẵn trong mảng nguyên thuộc [x,y] .

void LietKetChanTrongDoanXY(int a[], int n, int x, int y)

{

for (int i=0; i<n; i++)

{

if (a[i]% 2 == 0 &&x<=a[i] && a[i]<=y)

{

printf(“%4d",a[i ]);

}

}

}

179/ Liệt kê các số thỏa đk lớn hơn trị tuyệt đối của số đứng liền sau nó . void LietKe(int a[], int n)

{

int flag = 0;

for (int i=0; i<n; i++)

{

if (a[i]>abs(a[i-1 ]))

{

flag =1;

printf(" % 4d", a[i]);

}

}

if (flag == 0)

{

printf("Mang ko co gia tri do");

return;

}

}

180 Liệt kê các giá trị thỏa: nhỏ hơn trị tuyệt đối của giá trị đứng liền sau và lớn hơn giá trị đứng

liền trước nó

181 Liệt kê số chẵn có ít nhất 1 lận cận cũng là giá trị chẵn

182 Liệt kê các số có ít nhất 1 lận cận trái dấu với nó

183 Liệt kê vị trí mà giá trị tại đó là giá trị lớn nhất

184 Liệt kê vị trí của số nguyên tố 185 Liệt kê vị trí của số chính phương

186 Liệt kê vị trí mà giá trị bằng giá trị âm đầu tiên

Page 17: Khoahoctunhien.net mang1chieu

187 Liệt kê vị trí mà giá trị bằng giá trị dương nhỏ nhất

188 Liệt kê vị trí chẵn lớn nhất

189 Liệt kê giá trị mà giá trị đó có chữ số đầu tiên là chữ số lẻ

190 Liệt kê giá trị tòan chữ số lẻ 191 Liệt kê các giá trị cực đại. Cực đại khi lớn hơn các ptử lận cận

192 Liệt kê giá trị có chữ số đầu tiên là chẵn

193 Liệt kê giá trị có dạng 3^k. Nếu mảng ko có thì trả về 0

194 Liệt kê các cặp giá trị gần nhau nhất

195 Liệt kê các bộ 3 giá trị (a,b,c) thỏa a=b+c. ví dụ: (6,2,4)

196 Liệt kê các số âm

197 Liệt kê các chữ số đầu là lẻ

198 Liệt kê các vị trí mà tại đó là giá trị max 199 Liệt kê vị trí mà giá trị đó là số nguyên tố

Kĩ thuật tính tổng

200 Tổng các ptử trong mảng

int tong(int A[], int n)

{

int s=0;

for (int i=0; i<n; i++)

{

s = s + A[i];

}

return s;

}

201/ Tổng các ptử dương trong mảng

int Tong (int A[], int n)

{

int s = 0;

for (int i=0; i<n; i++)

{

if (A[i]>0)

{

s=s+A[i];

}

}

return s;

}

202/ Tổng các ptử có chữ số đầu là chữ số lẻ int daule(int n)

{

int donvi;

n=abs(n);

while (n>=10)

{

donvi=n% 10;

n=n/10;

}

if (n% 2==0)

{

return 0;

return 1;

}

int tongdaule(int A[], int n)

{

int s=0;

for (int i=0; i<n; i++)

{

if (daule(A[i])==1)

{

s = s + A[i];

}

}

return s;

Page 18: Khoahoctunhien.net mang1chieu

}

203/ Tổng các ptử có chữ số hàng chục là 5 int hangchuc5(int n)

{

n = abs(n);

n=n/10;

int hangchuc=n% 10;

if (hangchuc == 5)

{

return 1;

}

return 0;

}

int tong(int A[], int n)

{

int s=0;

for (int i=0; i<n; i++)

{

if (hangchuc5(A[i])==1)

{

s = s + A[i];

}

}

return s;

}

204/ Tổng các ptử lớn hơn ptử đứng liền trước nó

int tonggiatri(int A[], int n)

{

int s = 0 ;

for (int i=1; i<n; i++)

{

if (A[i]>A[i-1])

{

s=s+A[i];

}

}

return s;

}

205/ Tổng các ptử lớn hơn trị tuyệt đối của ptử liền sau nó int tonggiatri(int A[], int n)

{

int s=0;

for (int i=0; i<n-1; i++)

{

if ( A[i] > abs(A[i+1]) )

{

s=s+A[i];

}

}

return s;

}

206/ Tổng các ptử lớn hơn ptử xung quanh

int tonggiatri(int A[], int n)

{

int s=0;

for (int i=0; i<n; i++)

{

if (i==0 && A[i]>A[i+1])

{

Page 19: Khoahoctunhien.net mang1chieu

s = s + A[i];

}

else if (i!=0 && A[i]>A[i+1] && A[i] > A[i-1])

{

s = s + A[i];

}

else if (i==n-1 && A[i] > A[i-1])

{

s = s + A[i];

}

}

return s;

}

207/ Tổng các ptử cực trị – Cực trị là ptử khi nó lớn hoặc nhỏ hơn ptử xung quanh int tongcuctri (int A[], int n)

{

int s=0;

for (int i= 0; i<n; i++)

{

if (i==0 && A[i]!=A[i+1])

{

s = s + A[i];

}

else if (i==n-1 && A[i]!=A[i -1])

{

s = s + A[i];

}

else if ((A[i]<A[i+1] && A[i ]<A[i-1 ]) || (A[i]>A[i+1] && A[i]>A[i-1]) )

{

s = s + A[i];

}

}

return s;

}

208/ Tổng các ptử chính phương int sochinhphuong(int n)

{

int can = sqrt(n);

if (can*can == n)

return 1;

return 0;

}

int Tong(int* A, int n)

{

int s=0;

for (int i= 0; i<n; i++)

{

if (sochinhphuong(A[i])==1)

{

s=s+A[i];

}

}

return s;

}

209/ Tổng các ptử đối xứng int sodoixung(int n)

{

int donvi , tam = n;

int sodaonguoc = 0;

while(tam!=0)

{

donvi = tam% 10;

sodaonguoc = sodaonguoc*10 + donvi;

Page 20: Khoahoctunhien.net mang1chieu

tam = tam/10;

}

if (sodaonguoc == n)

{

return 1;

}

return 0;

}

int tong(int A[], int n)

{

int s=0;

for (int i= 0; i<n; i++)

{

if (sodoixung(A[i])==1)

{

s=s+A[i];

}

}

return s;

}

210/ Tổng các ptử có chữ số đầu là chẵn int sodauchan(int n)

{

while(n>=10)

{

n=n/10;

}

if (n% 2 == 0)

{

return 1;

}

return 0;

}

int tong(int A[], int n)

{

int s=0;

for (int i= 0; i<n; i++)

{

if (sodauchan(A[i])==1)

{

s=s+A[i];

dem ++;

}

}

return s;

}

211/ Trung bình cộng các số nguyên tố int songuyento(int n)

{

for(int i=2; i<n-1; i++)

{

if (n % i == 0)

return 0;

}

return 1;

}

float TBCong(int A[], int n)

{

int s=0;

float dem=0;

for (int i= 0; i<n; i++)

{

if (songuyento(A[i])==1)

{

s=s+A[i];

Page 21: Khoahoctunhien.net mang1chieu

dem ++;

}

}

if (dem == 0)

{

printf("Mang ko co so thoa yeu cau de");

return 0;

}

return s/dem;

}

212/ Trung bình cộng các số dương float TrungBinhCong(int A[], int n)

{

int s=0;

float dem=0;

for (int i= 0; i<n; i++)

{

if (A[i]>0)

{

s=s+A[i];

dem ++;

}

}

if (dem == 0)

{

printf("Mang ko co so thoa yeu cau de");

return 0;

}

return s/dem;

}

213/ Trung bình cộng các số lớn hơn x

float TBCong(int A[], int n, int x)

{

int s=0;

float dem=0;

for (int i= 0; i<n; i++)

{

if (A[i]>x)

{

s=s+A[i];

dem ++;

}

}

if (dem == 0)

{

printf("Mang ko co so thoa yeu cau de");

return 0;

}

return s/dem;

}

214/ Trung bình nhân các số dương float TBNhanDuong(int A[], int n, int m)

{

int T=1;

float dem=0;

for (int i= 0; i<n; i++)

{

if (A[i]>0)

{

T*=A[i];

dem ++;

}

}

Page 22: Khoahoctunhien.net mang1chieu

if (dem == 0)

{

printf("Mang ko co so thoa yeu cau de");

return 0;

}

return pow(T,1.0/dem);

}

215 (*) Khoảng cách trung bình giữa các giá trị trong mảng double tong(int A[], int n)

{

int s=0;

int y=0;

for (int i= 0; i<n; i++)

{

for (int j=i+1;i<n;j++)

{

s = s + abs(A[i ]-A[i+1]);

y++;

}

}

return pow(s,1.0/y);

}

Kĩ thuật đếm

216/ Đếm số lượng chẵn trong mảng int demsochan(int a[], int n)

{

int dem = 0;

for (int i=0; i<n; i++)

{

if (a[i]% 2 == 0)

{

dem ++;

}

}

return dem;

}

217/ Đếm số dương chia hết cho 7 trong mảng

int demsochan(int a[], int n)

{

int dem = 0;

for (int i=0; i<n; i++)

{

if (a[i]>0 && a[i]% 7 == 0)

{

dem ++;

}

}

return dem;

}

218/ Đếm số đối xứng trong mảng

int SoDoiXung(int n)

{

int DonVi=0;

int DaoNguoc = 0;

int tam = n;

while (tam>0)

{

DonVi = tam % 10;

tam = tam / 10;

DaoNguoc = DaoNguoc*10 + DonVi;

}

if (DaoNguoc == n)

Page 23: Khoahoctunhien.net mang1chieu

{

return 1;

}

return 0;

}

int dem (int a[], int n)

{

int dem = 0;

for (int i=0; i<n; i++)

{

if (a[i]<0)

{

break;

}

if (SoDoiXung(a[i ])==0)

{

dem ++;

}

}

return dem;

}

219/ Đếm số lần xuất hiện của giá trị x trong mảng

int dem (int a[], int n,int x)

{

int dem = 0;

for (int i=0; i<n; i++)

{

if (a[i] ==x)

{

dem ++;

}

}

return dem;

}

220 Đếm số lượng giá trị tận cùng bằng 5 trong mảng

int dem (int a[], int n)

{

int dem = 0;

for (int i=0; i<n; i++)

{

if (a[i]% 10 == 5)

{

dem ++;

}

}

return dem;

}

221/ Cho biết sự tương quan giữa số lượng chẵn và lẻ trong mảng

Hàm trả về 1 trong 3 giá trị -1, 0, 1

Giá trị -1 là chẵn nhiều hơn lẻ Giá trị 0 là chẵn == lẻ

Giá trị 1 là chẵn ít hơn lẻ .

int SoSanhChanLe(int a[], int n)

{

int demchan = 0;

for (int i=0; i<n; i++)

{

if (a[i]% 2 == 0)

{

demchan++;

}

}

if (demchan > n - demchan)

{

Page 24: Khoahoctunhien.net mang1chieu

return -1;

}

else if (n - demchan == demchan)

{

return 0;

}

return 1;

}

222/ Đếm ptử lớn hơn hay nhỏ hơn ptửs xung quanh trong mảng

int Dem(int A[], int n)

{

int i=0,j=0, DemTam=0;

for (i=0; i<n; i++)

{

if (i==0 && A[i]!=A[i+1])

{

DemTam++;

}

else if ( i == n-1 && A[i-1]!=A[i])

{

DemTam++;

}

else if ((A[i-1]>A[i] && A[i]<A[i+1]) || (A[i-1]<A[i] && A[i]>A[i+1]) )

{

DemTam++;

}

}

return DemTam;

}

223: Đếm số nguyên tố trong mảng

int SoNguyenTo(int a)

{

if (a<=1)

{

return 0;

}

for (int i=2; i<a; i++)

{

if (a% i==0)

{

return 0;

}

}

return 1;

}

int Dem(int a[], int n)

{

int i=0, DemTam=0;

for (i=0; i<n; i++)

{

if (SoNguyenTo(a[i])==1)

{

DemTam++;

}

}

return DemTam;

}

224/ Đếm số hoàn thiện trong mảng int sohoanthien(int n)

{

int tong=0;

Page 25: Khoahoctunhien.net mang1chieu

for (int i=1 ; i<n; i++)

if(n% i==0)

tong = tong + i;

if (tong == n)

return 1;

return 0;

}

int Dem(int a[], int n)

{

int i=0, DemTam=0;

for (i=0; i<n; i++)

{

if (sohoanthien(a[i])==1)

{

DemTam++;

}

}

return DemTam;

}

225/ Đếm số lượng giá trị lớn nhất có trong mảng int Dem(int a[], int n)

{

int i=0,DemTam=0;

int Max = a[0];

for (i=0; i<n; i++)

{

if (Max == a[i])

{

DemTam++;

}

else if (Max < a[i])

{

Max = a[i];

DemTam = 1;

}

}

return DemTam;

}

226/ Hãy xác định số lượng ptử kề nhau mà cả 2 đều chẵn

int Dem(int a[], int n)

{

int i=0,DemTam=0;

for (i=0; i<n-1; i++)

{

if (a[i]% 2==0 && a[i+1]% 2==0)

{

DemTam++;

}

}

if (DemTam!=0)

{

DemTam++;

}

return DemTam;

}

227/ Hãy xác định số lượng ptử kề nhau mà cả 2 trái dấu

int Dem(int a[], int n)

{

int i=0,DemTam=0;

for (i=0; i<n-1; i++)

{

Page 26: Khoahoctunhien.net mang1chieu

if (a[i]*a[i+1]<0)

{

DemTam++;

}

}

if (DemTam!=0)

{

DemTam++;

}

return DemTam;

}

228/ Hãy xác định số lượng ptử kề nhau mà số đứng sau cùng dấu số đứng trc và có gtrá trị tuyệt

đối lớn hơn . int Dem(int a[], int n)

{

int i=0,DemTam=0;

for (i=1; i<n; i++)

{

if (a[i]*a[i-1]>0 && abs(a[i-1])<abs(a[i]))

{

DemTam++;

}

}

return DemTam;

}

229/ Đếm số lượng các giá trị phân biệt có trong mảng . int Dem(int a[], int n)

{

int i,j,DemTam=0,test;

for (i=0; i<n; i++)

{

for (test=1,j=i+1;j<n;j++)

{

i f (a[i ]==a[j])

{

test =0;

break;

}

}

i f (test == 1)

{

DemTam++;

}

}

return DemTam;

}

230/ Liệt kê tần suất xuất hiện các giá trị xuất hiện trong mảng (mỗi giá trị liệt kê 1 lần)

void lietke(int *a, int n)

{

for (int i=0; i<n; i++)

{

for (int dem=0, j=0; j<n; j++)

{

if (a[i] == a[j])

{

if (j<i)

{

break;

}

else

{

dem++;

}

}

Page 27: Khoahoctunhien.net mang1chieu

}

if (dem!=0 )

{

printf("Gia tri % d co tan suat xuat hien la % d\n", a[i ], dem );

}

}

}

231/ Hãy liệt kê các giá trị xuất hiện đúng 1 lần trong mảng void lietke(int a[], int n)

{

int c[100];

int dem[100];

int vitri = 0;

for (int i=0; i<n; i++)

{

for (int demtam=0, j=0; j<n; j++)

{

if (a[i] == a[j])

{

if (j<i)

{

break;

}

else

{

demtam++;

}

}

}

if (demtam!=0 )

{

c[vi tri] = a[i ];

dem[vitri ] = demtam;

vi tri++;

}

}

printf("Gia tri chi xuat hien dung 1 lan\n\t");

for (int k=0; k<vitri; k++)

{

if (dem[k] == 1)

{

printf(" % d ", c[k]);

}

}

}

232/ hãy liệt jê các giá trị xuất hiện quá 1 lần (mỗi giá trị liệt kê 1 lần) void lietke(int a[], int n)

{

int c[100];

int dem[100];

int vitri = 0;

for (int i=0; i<n; i++)

{

for (int demtam=0, j=0; j<n; j++)

{

if (a[i] == a[j])

{

if (j<i)

{

break;

}

else

{

demtam++;

}

}

Page 28: Khoahoctunhien.net mang1chieu

}

if (demtam!=0 )

{

c[vi tri] = a[i ];

dem[vitri ] = demtam;

vi tri++;

}

}

printf("Gia tri chi xuat hien dung 1 lan\n\t");

for (int k=0; k<vitri; k++)

{

if (dem[k] != 1)

{

printf(" % d ", c[k]);

}

}

}

233/ Hãy liệt kê tần suất các giá trị xuất hiện trong mảng void lietke(int *a, int n)

{

for (int i=0; i<n; i++)

{

for (int dem=0, j=0; j<n; j++)

{

if (a[i] == a[j])

{

if (j<i)

{

break;

}

else

{

dem++;

}

}

}

if (dem!=0 )

{

printf("Gia tri % d co tan suat xuat hien la % d\n", a[i ], dem );

}

}

}

234/ Cho 2 mảng a,b. Đếm ptử chỉ xuất hiện 1 trong 2 mảng int Dem(int a[],int b[], int na,int nb)

{

int i,j,test,DemTam=0;

for (i=0; i<na; i++)

{

test=1;

for (j=0; j<nb; j++)

{

if (a[i]==b[j])

{

test = 0; break;

}

}

if (test==1)

{

DemTam++;

}

}

for (i=0;i<nb;i++)

{

test=1;

for (j=0; j<na;j++)

{

Page 29: Khoahoctunhien.net mang1chieu

if (b[i]==a[j])

{

test=0; break;

}

}

if (test==1)

{

DemTam++;

}

}

return DemTam;

}

235/ Cho 2 mảng a,b. Liệt kê ptử xuất hiện 1 trong 2 mảng

void LietKe(int a[],int b[], int na,int nb)

{

int i,j;

for (i=0; i<na; i++)

{

for (j=0; j<nb; j++)

{

if (a[i]==b[j])

{

printf("trong Mang A co ptu a[% d]=% d ko nam trong mang B\n",i,a[i]);

break;

}

}

}

for (i=0;i<nb;i++)

{

for (j=0; j<na;j++)

{

if (b[i]==a[j])

{

printf("trong Mang B co ptu b[% d]=% d ko nam trong mang A\n",i,b[i]);

break;

}

}

}

}

236 * Cho 2 mảng a,b. Hãy cho biết số lần xuất hiện của mảng a trong mảng b int Dem(int a[],int b[], int na,int nb)

{

int i,j,h,test,DemTam=0;;

for (i=0; i<nb; i++)

{

if (b[i ]==a[0] && nb-i>=na)

{

h=i;

for (test=1,j=0; j<na; j++,h++)

{

if (a[j] != b[h])

{

test=0;

break;

}

}

if (test==1)

{

DemTam++;

}

}

}

return DemTam;

}

237/ Tìm 1 giá trị có số lần xuất hiện nhiều nhất trong mảng

Page 30: Khoahoctunhien.net mang1chieu

int MotGiaTriXuatHienNhieuNhat(int a[],int n)

{

int flag[100]={0},i,j,Dem1;

for (i=0; i<n ; i++)

{

if (flag[i]==0)

{

for (Dem1=0,j=0;j<n;j++)

{

if (a[i] == a[j])

{

flag[j] = Dem1++;

}

}

}

}

int XuatHienMax = flag[0],vt=0;

for (i=0;i<n;i++)

{

if (XuatHienMax < flag[i ])

{

XuatHienMax = flag[i ];

vt = i;

}

}

return a[vt];

}

238 * Hãy liệt kê các giá trị có số lần xuất hiện nhiều nhất trong mảng

void LietKe(int a[],int n)

{

int flag[100]={0},i,j,Dem1;

//Tien hanh gan mảng flag == nhung con so dem dc

for (i=0; i<n ; i++)

{

if (flag[i]==0)

{

for (Dem1=0,j=0;j<n;j++)

{

if (a[i] == a[j])

{

flag[j] = Dem1++;

}

}

}

}

//flag nao co so lon nhat thi chinh la vi tri so dem dc nhieu nhat trong ma tran

int XuatHienMax = flag[0];

for (i=0;i<n;i++)

{

if (XuatHienMax < flag[i ])

{

XuatHienMax = flag[i ];

}

}

//Liet ke cac so xuat hien nhieu nhat

printf("So xuat hien nhieu nhat trong mang : ")

for (i=0;i<n;i++)

{

if (XuatHienMax == flag[i])

{

printf(" % d ",a[i]);

}

}

}

239/ Hãy đếm số lượng số nguyên tố phân biệt trong mảng

Page 31: Khoahoctunhien.net mang1chieu

int SoNguyenTo(int a)

{

if (a<=1)

{

return 0;

}

for (int i=2; i<a; i++)

{

if (a% i==0)

{

return 0;

}

}

return 1;

}

int Dem (int a[], int n)

{

int i,j, test,DemTam=0;

for (i=0;i<n;i++)

{

if (SoNguyenTo(a[i])==1)

{

for (test=1,j=i+1;j<n;j++)

{

if (a[i] == a[j] )

{

test =0;

break;

}

}

}

if (test == 1)

{

DemTam++;

}

}

return DemTam;

}

Kĩ thuật đặt cờ hiệu

240/ Ktra mảng có giá trị 0 hay ko?Có trả về 1, ko có trả về 0 int kiemtra0(int A[] , int n)

{

int flag = 0; //xem như mảng ko có giá trị 0

for(int i=0 ; i<n ;i++)

{

if(A[i ] == 0)

{

flag = 1;

}

}

return flag;

}

241/ Ktra mảng có 2 giá trị 0 liên tiếp ko? Có trả về 1, ko có trả về 0 . int kiemtra0lientiep(int A[] , int n)

{

int flag = 0;

for(int i=0 ; i<n ;i++)

{

if(A[i ] == 0 && A[i+1] == 0)

{

flag = 1;

break;

}

}

return flag;

Page 32: Khoahoctunhien.net mang1chieu

}

242/ Ktra mảng có số chẵn ko? Có trả về 1, ko có trả về 0 . int kiemtrachan(int A[] , int n)

{

int flag = 0;

for(int i=0 ; i<n ;i++)

{

if(A[i ]% 2 == 0)

{

flag = 1;

break;

}

}

return flag;

}

243/ Ktra mảng có số ng tố ko? Có trả về 1, ko có trả về 0 . int SoNguyenTo(int a)

{

if (a<=1)

{

return 0;

}

for (int i=2; i<a; i++)

{

if (a% i==0)

{

return 0;

}

}

return 1;

}

int kiemtrasonguyento(int A[] , int n)

{

int flag = 0;

for(int i=0 ; i<n ;i++)

{

if(songuyento(A[i]) == 1)

{

flag = 1;

}

}

return flag;

}

244/ Ktra mảng thỏa tính chất: mảng ko có số hoàn thiện lớn hơn 256. Có trả về 1, ko có trả về 0 int sohoanthien(int n)

{

int tong=0;

for (int i=1 ; i<n; i++)

if(n% i==0)

tong = tong + i;

if (tong == n)

return 1;

return 0;

}

int kttinhchat(int A[] , int n)

{

int flag = 0;

for(int i=0 ; i<n ;i++)

{

if(sohoanthien(A[i])==1 && A[i] < 256)

{

flag = 1;

break;

}

Page 33: Khoahoctunhien.net mang1chieu

}

return flag;

}

245/ Ktra mảng có toàn số chẵn ko? Có trả về 1, ko có trả về 0

int kttoanchan(int A[] , int n)

{

int flag = 1;

for(int i=0 ; i<n ;i++)

{

if(A[i ]% 2!=0)

{

flag = 0; break;

}

}

return flag;

}

246/ Ktra mảng có đối xứng ko? Có trả về 1, ko có trả về 0 .

int ktdoixung(int A[] , int n)

{

int flag = 1;

for(int i=0 ; i<n/2 ;i++)

{

if(A[i ] != A[n-i-1])

{

flag = 0;

break;

}

}

return flag;

}

247/ Ta định nghĩa 1 mảng có tính chất lẻ , khi tổng của 2 ptử lien tiếp luôn là lẻ.Ktra mảng có tính chẵn hay lẻ?

int kttoanle(int A[] , int n)

{

int flag = 1;

for(int i=0 ; i<n-1 ;i++)

{

if(((A[i]+A[i+1])% 2)==0)

{

flag = 0;

break;

}

}

return flag;

}

248/ Ktra mảng có tăng dần hay ko? int kttangdan(int A[] , int n)

{

int flag = 1;

for(int i=0 ; i<n-1 ;i++)

{

if(A[i ] > A[i+1])

{

flag = 0;

break;

}

}

return flag;

}

249/ Ktra mảng có giảm dần hay ko?

int ktgiam(int A[] , int n)

{

Page 34: Khoahoctunhien.net mang1chieu

int flag = 1;

for(int i=0 ; i<n-1 ;i++)

{

if(A[i ] < A[i+1])

{

flag = 0;

break;

}

}

return flag;

}

250/ Hãy cho biết các ptử trong mảng có lập thành cấp số cộng ko? Nếu có chỉ ra công sai d. int ktcapsocong(int A[] , int n , int &d)

{

d = A[1] - A[0];

int flag = 1;

for(int i=2 ; i<n-1 ;i++)

{

if((A[i+1] - A[i ])!=d)

{

flag = 0; break;

}

}

return flag;

}

251/ Hãy cho biết các ptử trong mảng có bằng nhau ko?

int ktbangnhau(int A[] , int n)

{

int flag = 0;

for(int i = 0 ; i < n-1 ;i++)

{

for(int j = i + 1 ; j < n ;j++)

{

if(A[i ] == A[j])

{

flag = 1;

break;

}

}

}

return flag;

}

252/ Ta định nghĩa 1 mảng đc gọi là dạng sóng, khi ptử có trị số I lớn hơn hoặc nhỏ hơn 2 ptử xung quanh. Hãy viết hàm ktra mảng có sóng hay ko?

int ktdangsong(int A[] , int n)

{

int flag = 1;

for(int i = 1 ; i < n-1 ; i++)

{

if((A[i-1] > A[i ] && A[i] > A[i+1]) || (A[i-1] < A[i] && A[i] < A[i+1]))

{

flag = 0;

break;

}

}

return flag;

}

253/ Hãy cho biết tất cả ptử trong mảng a có nằm trong mảng b ko? int ktAnamtrongB(int A[] , int B[] , int n , int m)

{

int flag = 0;

int dem = 0;

for(int i = 0 ; i < n ; i++)

Page 35: Khoahoctunhien.net mang1chieu

{

for(int j = 0 ; j < m ;j++)

{

if(A[i ] == B[j])

{

dem++;

}

}

}

if(dem == n)

{

flag = 1;

}

return flag;

}

254/ hãy đếm giá trị trong mảng thỏa: lớn hơn tất cả các giá trị đứng đằng trước nó

int demptlndungsau(int A[] , int n)

{

int dem = 0;

for(int i = 1 ; i < n ; i++)

{

int flag = 1;

for(int j = 0; j < i ;j++)

{

if(A[i ] < A[j] || A[i ] == A[j])

{

flag = 0;

}

}

if(flag == 1)

{

dem++;

}

}

return dem;

}

Kĩ thuật sắp xếp

255/ Sắp xếp mảng tăng dần

void sapxep(int a[],int n)

{

for (int i=0;i<n;i++)

{

for (int j=i+1;j<n;j++)

{

if (a[i]>a[j])

{

int temp=a[i];

a[i] = a[j];

a[j]=temp;

}

}

}

}

256/ sắp xếp mảng giảm dần void sapxep(int a[],int n)

{

for (int i=0;i<n;i++)

{

for (int j=i+1;j<n;j++)

{

if (a[i]<a[j])

{

Page 36: Khoahoctunhien.net mang1chieu

int temp=a[i];

a[i] = a[j];

a[j]=temp;

}

}

}

}

257/ Sắp xếp lẻ tăng dần nhưng giá trị khácgiữ nguyên vị trí void sapxep(int a[],int n)

{

for (int i=0;i<n;i++)

{

if (a[i]% 2!=0)

{

for (int j=i+1;j<n;j++)

{

if (a[j]% 2!=0 && a[i ]>a[j])

{

int temp=a[i];

a[i] = a[j];

a[j]=temp;

}

}

}

}

}

258/ Sắp xếp số nguyên tố tăng dần nhưng giá trị khác giữ nguyên vị trí int SoNguyenTo(int a)

{

if (a<=1)

{

return 0;

}

for (int i=2; i<a; i++)

{

if (a% i==0)

{

return 0;

}

}

return 1;

}

void sapxep(int a[],int n)

{

for (int i=0;i<n;i++)

{

if (SoNguyenTo (a[i] ) ==1)

{

for (int j=i+1;j<n;j++)

{

if (SoNguyenTo (a[j] ) ==1 && a[i]>a[j])

{

int temp=a[i];

a[i] = a[j];

a[j]=temp;

}

}

}

}

}

259/ Sắp xếp số hòan thiện giảm dần nhưng giá trị khác giữ nguyên vị trí int sohoanthien(int n)

{

int tong=0;

Page 37: Khoahoctunhien.net mang1chieu

for (int i=1 ; i<n; i++)

if(n% i==0)

tong = tong + i;

if (tong == n)

return 1;

return 0;

}

void sapxep(int a[],int n)

{

for (int i=0;i<n;i++)

{

if (sohoanthien (a[i ] ) ==1)

{

for (int j=i+1;j<n;j++)

{

if (sohoanthien (a[j] ) ==1 && a[i ]<a[j])

{

int temp=a[i];

a[i] = a[j];

a[j]=temp;

}

}

}

}

}

260/ Cho 2 mảng a,b. Hãy cho biết mảng b có phải là hoán vị của mảng a ko?

void sapxep(int a[],int n)

{

for (int i=0;i<n;i++)

{

for (int j=i+1;j<n;j++)

{

if (a[i]>a[j])

{

int temp=a[i];

a[i] = a[j];

a[j]=temp;

}

}

}

}

void KetQua(int a[],int b[],int na,int nb)

{

if (na != nb)

{

printf("ko phai!");

return ;

}

sapxep(a,na);

sapxep(b,nb);

for (int i=0;i<na;i++)

{

if (a[i]!=b[i])

{

printf("ko phai");

return;

}

}

printf("phai!");

return;

}

261 Sắp xếp số dương tăng dần, các số âm giữ nguyên vị trí

void sapxep(int a[],int n)

{

for (int i=0;i<n;i++)

{

Page 38: Khoahoctunhien.net mang1chieu

if (a[i]>0)

{

for (int j=i+1;j<n;j++)

{

if (a[j]>0 && a[i]>a[j])

{

int temp=a[i];

a[i] = a[j];

a[j]=temp;

}

}

}

}

}

262/ Sắp xếp chẵn, lẻ tăng dần nhưng vị trí tương đối giữa các số ko thay đổi void sapxep(int a[],int n)

{

for (int i=0;i<n;i++)

{

for (int j=i+1;j<n;j++)

{

if (((a[i]% 2==0 && a[j]% 2==0)||(a[i]% 2!=0 && a[j]% 2!=0)) && a[i]>a[j])

{

int temp=a[i];

a[i] = a[j];

a[j]=temp;

}

}

}

}

263/ Sắp xếp số dương tăng dần, âm giảm dần. Vị trí tương đối ko đổi void sapxep(int a[],int n)

{

for (int i=0;i<n;i++)

{

for (int j=i+1;j<n;j++)

{

if (a[i]>0 && a[j]>0 && a[i ]>a[j])

{

int temp=a[i];

a[i] = a[j];

a[j]=temp;

}

else if (a[i]<0 && a[j]<0 && a[i ]<a[j])

{

int temp=a[i];

a[i] = a[j];

a[j]=temp;

}

}

}

}

264 Trộn 2 mảng đã tăng thành 1 mảng đc sắp xếp tăng void sapxep(int a[],int n)

{

for (int i=0;i<n;i++)

{

for (int j=i+1;j<n;j++)

{

if (a[i]>a[j])

{

int temp=a[i];

a[i] = a[j];

a[j]=temp;

Page 39: Khoahoctunhien.net mang1chieu

}

}

}

}

void TronMang(int a[], int b[], int c[], int na, int nb, int &nc)

{

nc = na + nb;

sapxep(a,na); //Sap xep tang mang A

sapxep(b,nb); //Sap xep tang mang B

int vta=0,vtb=0;

for (int i=0;i<nc;i++)

{

if (vta < na && vtb < nb)

{

if (a[vta] < b[vtb])

{

c[i] = a[vta];

vta++;

}

else

{

c[i] = b[vtb];

vtb++;

}

}

else if (vtb == nb)

{

c[i] = a[vta];

vta++;

}

else

{

c[i] = b[vtb];

vtb++;

}

}

}

265/ Cho 2 mảng tăng. Hãy trộn thành 1 mảng giảm dần

void sapxep(int a[],int n)

{

for (int i=0;i<n;i++)

{

for (int j=i+1;j<n;j++)

{

if (a[i]>a[j])

{

int temp=a[i];

a[i] = a[j];

a[j]=temp;

}

}

}

}

void TronMang(int a[], int b[], int c[], int na, int nb, int &nc)

{

nc = na + nb;

sapxep(a,na); //Sap xep tang mang A

sapxep(b,nb); //Sap xep tang mang B

int vta=na-1, vtb=nb-1;

for (int i=0;i<nc;i++)

{

if (vta >= 0 && vtb >= 0)

{

if (a[vta] > b[vtb])

{

c[i] = a[vta];

vta--;

Page 40: Khoahoctunhien.net mang1chieu

}

else

{

c[i] = b[vtb];

vtb--;

}

}

else if (vtb < 0)

{

c[i] = a[vta];

vta--;

}

else

{

c[i] = b[vtb];

vtb--;

}

}

}

Kĩ thuật thêm

266/ Thêm 1 ptử x vào mảng tại vị trí k . void themgiatri(int a[], int &n, int x, int k)

{

for (i=n; i>k; i--)

{

a[i] = a[i -1];

}

a[k] = x;

n++;

}

267/ Hàm nhập mảng sao cho khi nhập xong thì giá trị trong mảng sắp xếp giảm dần . void nhapmang(int a[], int &n)

{

printf("Nhap mang 1 chieu\n");

printf("Nhap n : "); scanf("% d",&n);

while (n<=1)

{

printf("Nhap lai n : " );

scanf("% d",&n);

}

int i,j,k;

for (i=0; i<n; i++)

{

printf("\tNhap a[% d] : ", i);

scanf("% d",&a[i]);

for (j=0; j<i;j++)

{

if (a[i]>a[j])

{

int temp = a[i];

for (k = i; k>j; k--)

{

a[k] = a[k-1];

}

a[j] = temp;

break;

}

}

}

}

268/ Hãy tạo mảng b từ mảng a các giá trị 0,1 để mảng có tính chẵn lẻ .

269/ Thêm x vào trong mảng tăng nhưng vẫn giữ nguyên tính tăng của mảng .

void ChenXMangTang(int a[], int &n, int x)

Page 41: Khoahoctunhien.net mang1chieu

{

int i,j;

for (i=0; i<n;i++)

{

if (x>a[i])

{

int temp = x;

for (k = n; k>i; k--)

{

a[k] = a[k-1];

}

a[i] = temp;

break;

}

}

n++;

}

270/ Nhập mảng sau khi nhập xong đã tự sắp xếp tăng dần

void nhapmang(int a[], int &n)

{

printf("Nhap mang 1 chieu\n");

printf("Nhap n : "); scanf("% d",&n);

while (n<=1)

{

printf("Nhap lai n : " );

scanf("% d",&n);

}

int i,j,k;

for (i=0; i<n; i++)

{

printf("\tNhap a[% d] : ", i);

scanf("% d",&a[i]);

for (j=0; j<i;j++)

{

if (a[i]>a[j])

{

int temp = a[i];

for (k = i; k>j; k--)

{

a[k] = a[k-1];

}

a[j] = temp;

break;

}

}

}

}

Kĩ thuật xóa

271/ Xóa các ptử có chỉ số k trong mảng void Xoavitri(int a[], int &n, int k)

{

for(int i=k; i<n;i++)

{

a[i] = a[i+1];

}

n--;

}

272/ hãy xóa tất cả số lớn nhất trong mảng các số thực

void xoavitri(float a[], int &n, int k)

{

for (int i=k; i<n; i++)

{

Page 42: Khoahoctunhien.net mang1chieu

a[i] = a[i+1];

}

n--;

}

float lonnhat(float a[], int n)

{

float max = a[0];

for (int i=1; i<n ; i++)

{

max=(max<a[i ])?a[i]:max;

}

return max;

}

void xoamang(float a[], int &n)

{

float max = lonnhat(a,n);

for (int i=0; i<n; i++)

{

if (a[i]==max)

{

xoavitri(a,n,i );

i--;

}

}

}

273/ Xóa tất cả số âm trong mảng .

void xoavitri(float a[], int &n, int k)

{

for (int i=k; i<n; i++)

{

a[i] = a[i+1];

}

n--;

}

void xoamang(float a[], int &n)

{

for (int i=0; i<n; i++)

{

if (a[i]<0)

{

xoavitri(a,n,i );

i--;

}

}

}

274/ Xóa tất cả số chẵn trong mảng . void xoavitri(float a[], int &n, int k)

{

for (int i=k; i<n; i++)

{

a[i] = a[i+1];

}

n--;

}

void xoamang(float a[], int &n)

{

for (int i=0; i<n; i++)

{

if (a[i]% 2==0)

{

xoavitri(a,n,i );

i--;

}

}

}

Page 43: Khoahoctunhien.net mang1chieu

275/ Xóa tất cả số chính phương trong mảng . void xoavitri(int a[], int &n, int k)

{

for (int i=k; i<n; i++)

{

a[i] = a[i+1];

}

n--;

}

int sochinhphuong(int n)

{

int a = (int)s qrt(n);

if (a*a == n)

{

return 1;

}

return 0;

}

void xoamang(int a[], int &n)

{

for (int i=0; i<n; i++)

{

if (sochinhphuong(a[i])==1)

{

xoavitri(a,n,i );

i--;

}

}

}

276/ Xóa tất cả các ptử trùng với x .

void xoavitri(float a[], int &n, float k)

{

for (int i=k; i<n; i++)

{

a[i ] = a[i+1];

}

n--;

}

void xoamang(float a[], int &n, float x)

{

for (int i=0; i<n; i++)

{

if (a[i] ==x)

{

xoavitri(a,n,i );

i--;

}

}

}

277/ Xóa tất cả số nguyên tố trong mảng . void xoavitri(int a[], int &n, int k)

{

for (int i=k; i<n; i++)

{

a[i] = a[i+1];

}

n--;

}

int songuyento(int n)

{

for (int i=2; i<n; i++)

{

if (n% i==0)

return 0;

}

Page 44: Khoahoctunhien.net mang1chieu

return 1;

}

void xoamang(int a[], int &n)

{

for (int i=0; i<n; i++)

{

if (a[i]>=2)

{

i f (songuyento(a[i ])==1)

{

xoavitri(a,n,i);

i --;

}

}

}

}

278/ xóa tất cả ptử trùng nhau trong mảng và chỉ giữ lại duy nhất 1 ptử .

void xoavitri(int a[], int &n, int k)

{

for (int i=k; i<n; i++)

{

a[i] = a[i+1];

}

n--;

}

void xoamang(int a[], int &n)

{

for (int i=0; i<n-1; i++)

{

for(int j=i+1; j<n;j++)

{

if (a[i]==a[j])

{

xoavitri(a,n,j);

j--;

}

}

}

}

279/ Xóa tất cả ptử xuất hiên nhiều hơn 1 lần trong mảng . void xoavitri(int a[], int &n, int k)

{

for (int i=k; i<n; i++)

{

a[i] = a[i+1];

}

n--;

}

void xoamang(int a[], int &n)

{

for (int i=0; i<n-1; i++)

{

for(int test = 0,j=i+1; j<n;j++) //xóa ptử tại j

{

if (a[i]==a[j])

{

xoavitri(a,n,j);

j--;

test=1;

}

}

if (test == 1)

{

xoavitri(a,n,i); //Xóa luôn chính nó

Page 45: Khoahoctunhien.net mang1chieu

}

}

}

Kĩ thuật xử lý mảng

280/ Hãy đưa số 1 về đầu mảng . void DoiCho(int a[], int n, int k)

{

for(int i = k ; i>0; i--)

{

a[i] = a[i -1];

}

a[0] = 1;

}

void duaMotvedau(int a[], int n)

{

for (int i=0; i<n; i++)

{

if (a[i] == 1)

{

DoiCho(a,n,i); //vi tri i

}

}

}

281/ Hãy đưa chẵn về đầu, lẻ về cuối, ptử 0 nằm giữa mảng . void duachanvedau(int a[], int k)

{

int tam = a[k];

for(int i = k ; i>0; i--)

{

a[i] = a[i -1];

}

a[0] = tam;

}

void dua0(int a[], int k, int vi trichancuoi)

{

for(int i = k ; i>vi trichancuoi; i--)

{

a[i] = a[i -1];

}

a[vi trichancuoi] = 0;

}

void sapxep(int a[], int n)

{

int i;

int vitrichancuoi;

for (i=0; i<n; i++)

{

if (a[i] % 2 == 0 && a[i]!=0)

{

duachanvedau(a,i); //vi tri i

}

}

for (i=0; i<n; i++)

{

if (a[i]% 2!=0)

{

vi trichancuoi = i;

break;

}

}

for (i ; i<n; i++)

{

if (a[i] == 0 )

{

Page 46: Khoahoctunhien.net mang1chieu

dua0(a,i,vitrichancuoi); //vi tri i

}

}

}

282/ Đưa các số chia hết cho 3 về đầu mảng . void DoiCho(int a[], int n, int k)

{

int tam = a[k];

for(int i = k ; i>0; i--)

{

a[i] = a[i -1];

}

a[0] = tam;

}

void chiahetchoba(int a[], int n)

{

for (int i=0; i<n; i++)

{

if (a[i] % 3 == 0)

{

DoiCho(a,n,i); //vi tri i

}

}

}

283/ Đảo ngược mảng ban đầu . void hoanvi(int &a, int &b)

{

int tam = a;

a = b;

b =tam;

}

void DaoMang(int a[], int n)

{

for (int i=0,j=n-1; i<j; i++,j--)

{

hoanvi(a[i],a[j]);

}

}

284/ Đảo ngược thứ tự các số chẵn trong mảng .

void hoanvi(int &a, int &b)

{

int tam = a;

a = b;

b =tam;

}

void daochan(int a[], int n)

{

for (int i=0; i<n-1; i++)

{

for (int j = i+1; j<n; j++)

{

if (a[j]% 2==0 &&a[i] % 2 == 0)

{

hoanvi(a[i],a[j]);

}

}

}

}

285/ Đảo ngược thứ tự số dương trong mảng . void hoanvi(int &a, int &b)

{

int tam = a;

a = b;

Page 47: Khoahoctunhien.net mang1chieu

b =tam;

}

void daoduong(int a[], int n)

{

for (int i=0; i<n-1; i++)

{

for (int j = i+1; j<n; j++)

{

if (a[j]>0 && a[i]> 0)

{

hoanvi(a[i],a[j]);

}

}

}

}

286/ Dịch trái xoay vòng các ptử trong mảng .

void dichtrai(int a[], int n)

{

int tam = a[0];

for (int i=0; i<n-1; i++)

{

a[i]=a[i+1];

}

a[n-1]= tam;

}

287/ Dịch phải xoay vòng các ptử trong mảng

void dichphai(int a[], int n)

{

int tam = a[n-1];

for (int i=n-1; i>0; i--)

{

a[i]=a[i-1];

}

a[0]= tam;

}

288/Hãy xuất ptử trong mảng theo yêu cầu: chẵn vàng, lẻ trắng .

void color (int a)

{

HANDLE mau;

mau = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleTextAttribute(mau,a);

}

void XuatChanVangLeTrang(int a[], int n)

{

for (int i=0; i<n; i++)

{

if (a[i]% 2==0)

{

color(14);

printf("% 4d",a[i]);

}

else

{

color(7);

printf("% 4d",a[i]);

}

}

}

289/ Xuất mảng: chẵn nằm trên 1 hàng, lẻ nằm hàng tiếp theo . void chanlehaihang(int a[], int n)

{

for (int i=0; i<n; i++)

Page 48: Khoahoctunhien.net mang1chieu

{

if (a[i]% 2==0)

{

printf("% 4d",a[i]);

}

}

printf("\n\t");

for (i=0; i<n; i++)

{

if (a[i]% 2!=0)

{

printf("% 4d",a[i]);

}

}

}

290/ Đảo ngược thứ tự số chẵn và lẻ trong mảng nhưng giữ vị trí tương đối .

void hoanvi(int &a, int &b)

{

int tam = a;

a = b;

b =tam;

}

void daonguocchanle(int a[], int n)

{

int i, j;

for (i=0; i<n; i++)

{

for(j=i+1; j<n; j++)

{

if (a[i]% 2==0 && a[j]% 2 == 0)

hoanvi(a[i],a[j]);

else if (a[i]% 2!=0 && a[j]% 2!=0)

hoanvi(a[i],a[j]);

}

}

}

291/ Biến đổi mảng bằng cách thay giá trị max = giá trị min và ngc lại . void minmax(int a[], int n, int &max, int &min)

{

max=a[0];

min=a[0];

for (int i=1; i<n; i++)

{

max=(max<a[i ])?a[i]:max;

min=(min>a[i])?a[i]:min;

}

}

void biendoi(int a[], int n, int max, int min)

{

for(int i=0; i<n; i++)

{

if (a[i]==max)

{

a[i]=min;

}

else if (a[i]==min)

{

a[i]=max;

}

}

}

292/ Biến đổi mảng bằng cách thay tất cả ptử trong mảng bằng số nguyên gần nó nhất . void thaysogannhat(float &n)

{

Page 49: Khoahoctunhien.net mang1chieu

int phannguyen = (int) (n) ;

float phanle = n - phannguyen;

if (phanle <=0.5)

{

n = (float)phannguyen;

}

else

{

n = (float)phannguyen + 1;

}

}

void biendoi(float a[], int n)

{

for (int i=0; i<n; i++)

{

thaysogannhat(a[i]);

}

}

Kĩ thuật xử lý mảng con

293/ Liệt kê tất cả các mảng con .

void lietkecon(int a[], int n)

{

int ChieuDai;

for (int i=0; i<n; i++)

{

for (ChieuDai = 1; ChieuDai<=n; ChieuDai++)

{

for(int j=i; j<ChieuDai; j++)

{

printf("% 4d", a[j]);

}

printf("\n");

}

}

}

294/ Liệt kê mảng con có độ dài lớn hơn 2 ptử .

void lietkecon(int a[], int n)

{

int ChieuDai;

for (int i=0; i<n; i++)

{

for (ChieuDai = 3+i; ChieuDai<=n; ChieuDai++)

{

for(int j=i; j<ChieuDai; j++)

{

printf("% 4d", a[j]);

}

printf("\n");

}

}

}

295/ Liệt kê dãy con tăng dần .

int ktramangtang(int b[], int nb)

{

for(int i=0; i<nb-1; i++)

{

if (b[i ]>b[i+1])

return 0;

}

return 1;

}

void xuatmangcon(int b[], int nb)

Page 50: Khoahoctunhien.net mang1chieu

{

for(int i=0; i<nb; i++)

{

printf("% 4d", b[i]);

}

printf("\n");

}

void lietkecontang(int a[], int n)

{

int ChieuDai;

int b[100], nb;

for (int i=0; i<n; i++)

{

for (ChieuDai = 1; ChieuDai<=n; ChieuDai++)

{

nb=0;

for(int j=i; j<ChieuDai; j++)

{

b[nb]=a[j];

nb++;

}

if (ktramangtang(b,nb)==1)

{

xuatmangcon(b,nb);

}

}

}

}

296/ Liệt kê dãy con tăng và chứa giá trị lớn nhất .

int lonnhat(int a[], int n)

{

int max = a[0];

for (int i=1; i<n; i++)

{

max = max<a[i]?a[i]:max;

}

return max;

}

int ktramangtang(int b[], int nb)

{

for(int i=0; i<nb-1; i++)

{

if (b[i ]>b[i+1])

return 0;

}

return 1;

}

void xuatmangcon(int b[], int nb)

{

for(int i=0; i<nb; i++)

{

printf("% 4d", b[i]);

}

printf("\n");

}

int ktracomax(int b[], int nb,int max)

{

for (int i=0; i<nb;i++)

{

if (b[i ]==max)

{

return 1;

}

}

return 0;

}

void lietkecontang(int a[], int n, int max)

Page 51: Khoahoctunhien.net mang1chieu

{

int ChieuDai;

int b[100], nb;

for (int i=0; i<n; i++)

{

for (ChieuDai = 1; ChieuDai<=n; ChieuDai++)

{

nb=0;

for(int j=i; j<ChieuDai; j++)

{

b[nb]=a[j];

nb++;

}

if (ktramangtang(b,nb)==1)

{

if (ktracomax(b,nb,max)==1)

{

xuatmangcon(b,nb);

}

}

}

}

}

297/ Tính tổng từng mảng con tăng . int ktramangtang(int b[], int nb)

{

for(int i=0; i<nb-1; i++)

{

if (b[i ]>b[i+1])

return 0;

}

return 1;

}

void xuatmangcon(int b[], int nb)

{

for(int i=0; i<nb; i++)

{

printf(" % d ", b[i]);

}

}

intt tongmangcon(int b[], int nb)

{

intt s=0;

for (int i=0; i<nb; i++)

{

s = s + b[i];

}

return s;

}

void lietkecontang(int a[], int n)

{

int chieudaicon, b[100], nb, tong;

for (int i=0; i<n; i++)

{

for (chieudaicon = 1+i; chieudaicon<=n; chieudaicon++)

{

for(int j=i; j<chieudaicon; j++)

{

b[nb]=a[j];

nb++;

}

if (ktramangtang(b,nb)==1)

{

xuatmangcon(b,nb);

tong = tongmangcon(b,nb);

printf("\tTong mang nay: % .2f\n", tong);

}

Page 52: Khoahoctunhien.net mang1chieu

}

}

}

298/ Đếm mảng con tăng có độ dài lớn hơn 1 . int ktramangtang(int b[], int nb)

{

for(int i=0; i<nb-1; i++)

{

if (b[i ]>b[i+1])

return 0;

}

return 1;

}

void Demcontang(int a[], int n)

{

int chieudaicon, b[100], nb;

int dem=0;

for (int i=0; i<n; i++)

{

for (chieudaicon = 2+i; chieudaicon<=n; chieudaicon++)

{

for(int j=i; j<chieudaicon; j++)

{

b[nb]=a[j];

nb++;

}

if (ktramangtang(b,nb)==1)

{

dem++;

}

}

}

printf("\nTong so mang can tim: % d\n", dem);

}

299/ Liệt kê dãy con toàn dương và độ dài lớn hơn 1 . int ktramangduong(float b[], int nb)

{

for(int i=0; i<nb; i++)

if (b[i ]<0)

return 0;

return 1;

}

void xuatmangcon(float b[], int nb)

{

for(int i=0; i<nb; i++)

printf(" % .2f ", b[i]);

printf("\n");

}

void lietkecontang(float a[], int n)

{

int chieudaicon;

float b[100];

int nb;

for (int i=0; i<n; i++)

{

for (chieudaicon = 2+i; chieudaicon<=n; chieudaicon++)

{

for(int j=i; j<chieudaicon; j++)

{

b[nb]=a[j];

nb++;

}

if (ktramangduong(b,nb)==1)

xuatmangcon(b,nb);

}

Page 53: Khoahoctunhien.net mang1chieu

}

}

300/ Đếm mảng con giảm .

int ktramanggiam(float b[], int nb)

{

for(int i=0; i<nb-1; i++)

{

if (b[i ]<b[i+1])

return 0;

}

return 1;

}

void Demcongiam(float a[], int n)

{

int chieudaicon;

float b[100];

int nb;

int dem=0;

for (int i=0; i<n; i++)

{

for (chieudaicon = 1+i; chieudaicon<=n; chieudaicon++)

{

nb=0;

for(int j=i; j<chieudaicon; j++)

{

b[nb]=a[j];

nb++;

}

if (ktramanggiam(b,nb)==1)

dem++;

}

}

printf("\nTong so mang con giam can tim: % d\n", dem);

}

301/ Cho biết mảng a có phải là mảng con trong mảng b ko? int Ktra(int a[], int b[], int na, int nb)

{

int i,j,test = 0;

for (i=0; i<nb; i++)

{

if (b[i ]==a[0])

{

int h = i;

for (test=1, j=0; j<na;j++,h++)

{

if (a[j] != b[h])

{

test = 0;

break;

}

}

if (test == 1)

return test; //Mảng a là con mảng b

}

}

return test;

}

302/ Đếm số lần xuất hiện mảng a trong mảng b . int Dem(int a[], int b[], int na, int nb)

{

int i,j,test,dem=0;

Page 54: Khoahoctunhien.net mang1chieu

for (i=0; i<nb; i++)

{

if (b[i ]==a[0])

{

int h = i;

for (test=1, j=0; j<na;j++,h++)

{

if (a[j] != b[h])

{

test = 0;

break;

}

}

if (test == 1)

dem++;

}

}

return dem;

}

303/ Dãy con toàn dương dài nhất . void DayConToanDuongDaiNhat(int a[], int n)

{

int i,l,k,test,vt,pt=0;

for (i=0;i<n;i++)

{

for (l=i; l<=n;l++)

{

for (test = 1,k=0; k<l ; k++)

{

if (a[k]<0)

{

test = 0; break;

}

}

if (test == 1)

{

if (pt<k)

{

pt=k;

vt=i ;

}

}

}

}

printf("\nDay con duong dai nhat: ");

for (vt; vt<pt; vt++)

printf("% 4d",a[vt]);

}

304 * Cho mảng a, số nguyên M.Tìm 1 mảng con sao cho tổng các ptử bằng M . void TongMangConBangM(int a[], int n,int m)

{

int i,l,k,s=0;

for (i=0;i<n;i++)

{

for (l=i; l<=n;l++)

{

for (k=0; k<l ; k++)

s+=a[k];

if (s == m)

{

printf("\nDay con co tong ptu bang M: ");

for (k=0; k<l ; k++)

printf("% 4d",a[k]);

}

Page 55: Khoahoctunhien.net mang1chieu

}

}

}

305 * Tìm dãy con toàn dương có tổng lớn nhất . void DayConToanDuongTongLonNhat(int a[], int n)

{

int i,l,k,s=0,Stam=0,test,vt,pt;

for (i=0;i<n;i++)

{

for (l=i; l<=n;l++)

{

for (test=1,k=0; k<l ; k++)

{

Stam+=a[k];

if (a[k]<0)

{

test = 0; break;

}

}

if (test == 1)

{

if (Stam>s)

{

s = Stam;

vt = i;

pt = k;

}

}

}

}

printf("\nDay con duong co tong lon nhat: ");

for (vt; vt<pt; vt++)

printf("% 4d",a[vt]);

}

306/ Tìm mảng con có tổng lớn nhất .

void DayConTongLonNhat(int a[], int n)

{

int i,l,k,s=0,Stam=0,vt,pt;

for (i=0;i<n;i++)

{

for (l=i; l<=n;l++)

{

for (k=0; k<l ; k++)

Stam+=a[k];

if (Stam>s)

{

s = Stam;

vt = i;

pt = k;

}

}

}

printf("\nDay con co tong lon nhat: ");

for (vt; vt<pt; vt++)

printf("% 4d",a[vt]);

}

Xây dựng mảng 307/ Tạo mảng b chỉ chứa giá trị lẻ từ mảng a .

void TaoMangB(int a[], int n)

{

Page 56: Khoahoctunhien.net mang1chieu

int b[100], nb=0;

for (int i=0; i<n;i++)

{

if (a[i]% 2!=0)

{

b[nb] = a[i];

nb++;

}

}

xuatmang(b,nb);

}

308/ Tạo mảng b chỉ chứa giá trị âm từ mảng a .

void TaoMangB(int a[], int n)

{

int b[100], nb=0;

for (int i=0; i<n;i++)

{

if (a[i]<0)

{

b[nb] = a[i];

nb++;

}

}

xuatmang(b,nb);

}

309/ Tạo mảng b sao cho b[i] = tổng các ptử lận cận với a[i] trong mảng a . void TaoMangB(int a[], int n)

{

int b[100], nb=0;

for (int i=0; i<n;i++)

{

if (i==0)

b[nb] = a[i+1];

else if (i==n-1)

b[nb] = a[i-1 ];

else

b[nb] = a[i-1 ] + a[i+1];

nb++;

}

xuatmang(b,nb);

}

310/ Tạo mảng b chỉ chứa số nguyên tố từ mảng a . int SoNguyenTo(int a)

{

if (a<=1)

return 0;

for (int i=2; i<a; i++)

if (a% i==0)

return 0;

return 1;

}

void TaoMangB(int a[], int n)

{

int b[100], nb=0;

for (int i=0; i<n;i++)

{

if (SoNguyenTo(a[i])==1)

{

b[nb] = a[i];

nb++;

}

}

xuatmang(b,nb);

}

Page 57: Khoahoctunhien.net mang1chieu

----------Hết Mảng 1 chiều --------

Bài tổng hợp nâng cao chút của mảng 1 chiều 311/ Tạo 1 mảng ngẫu nhiên và xuất ra dãy con tăng dần dài nhất. Nếu 2 dãy con tăng dài bằng

nhau thì xuất dãy con tăng đầu tiên .

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

void NhapMang(int a[], int &n)

{

n = rand()% 10;

for (int i=0; i<n; i++)

a[i] = rand()% 50;

}

void XuatMang(int a[], int n)

{

for (int i=0; i<n; i++)

printf("% 4d",a[i]);

}

void TimDayConTangDan(int a[], int n, int &ViTriBatDau, int &ViTriKetThuc)

{

int ViTriBatDauTam =0, ViTriKetThucTam=0;

int Dem =0, DemTam = 0;

for (ViTriKetThucTam = 0; ViTriKetThucTam<n; ViTriKetThucTam++)

{

if (a[ViTriKetThucTam] <= a[ViTriKetThucTam+1])

{

DemTam++;

}

else

{

if (DemTam>Dem)

{

ViTriBatDau = ViTriBatDauTam;

ViTriKetThuc = ViTriKetThucTam;

Dem = DemTam;

}

ViTriBatDauTam = ViTriKetThucTam + 1;

DemTam = 0;

}

}

}

void XuatDayCon(int a[], int ViTriBatDau, int ViTriKetThuc)

{

for(int i=ViTriBatDau; i<=ViTriKetThuc; i++)

printf("% 4d",a[i]);

}

void main()

{

srand((unsigned)time(NULL));

int n,a[100];

NhapMang(a,n); //Nhập mảng ngẫu nhiên

printf("Mang ngau nhien duoc tao: ");

XuatMang(a,n);

printf("\n");

//Tìm dãy con tăng dài nhất

int ViTriBatDau = -1, ViTriKetThuc = -1;

TimDayConTangDan(a,n,ViTriBatDau,ViTriKetThuc);

//Xuất dãy con tăng với 2 biến ViTriBatDau, ViTriKetThuc

printf("Day con tang dai nhat: ");

XuatDayCon(a,ViTriBatDau,ViTriKetThuc);

}