mang 1 chieu-1
Chuyên đề mảng 1 chiều
Y!m :nhatquai.the boy
128/ Viế t hàm nhập mảng 1 chiề u các số thực
voi d NhapMang(float a[], int &n)
{
printf("Nhap s o phan tu: ");
s canf ("% d",& n);
for (i nt i =0;i
{
printf(" Nhap a[% d]: ", i);
s canf("% f", & a[i]);
}
}
129/ Viế t hàm nhập mảng 1 chiề u các số nguyê n
voi d NhapMang(i nt a[], int &n)
{
printf("Nhap s o phan tu: ");
s canf ("% d",& n);
for (i nt i =0;i
{
printf(" Nhap a[% d]: ", i);
s canf("% d", & a[i]);
}
}
130/ Viế t hàm xuất mảng 1 chiều các số thực
voi d XuatMang(float a[], int n)
{
for (i nt i =0;i
{
printf(" % .2f ", a[i]);
}
}
131/ Viế t hàm xuất mảng 1 chiều các số nguyê n
voi d XuatMang(i nt a[], int n)
{
for (i nt i =0;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 .
voi d LietKe GiaTri Chan(int a[], int n)
{
for (i nt i =0;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 .
voi d LietKeVi TriAm(int a[], int n)
{
for (i nt i =0;i
{
if(a[i ]
printf("% 4d",i);
}
}
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
{
if(a[i]>lc)
lc=a[i];
}
re turn 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 duong dau(float a[], int n)
{
for (i nt i =0; i
{
if (a[i]>0 )
{
retur n a[i];
}
}
retur n -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)
{
retur n a[i];
}
}
retur n -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
{
if(a[i] } 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(i nt a[] , int n) { for(int i=0; i { if(a[i ]% 2==0) { retur n i; } } retur n -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 s ohoanthie n(int n) { int tong=0 ; for (i nt i =1 ; i if(n% i==0) tong = tong + i; if (tong == n) retur n 1; retur n 0; } int vitrihoanthiencuoi(int a[],int n) { for(int i=n-1; i>=0; i--) if(s ohoanthien(a[i]==1) retur n i; retur n -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) { fl oat min; int de m= 0; for (i nt i =0; i { if(a[i ]>0) { de m ++; bre ak; } } if (de m !=0 ) { min = a[i]; for (i=i+1; i { if((a[i]>0)&&(mi n>a[i ])) { min = a[i ]; } } retur n min; } retur n -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, i nt n) { int min; int de m =0 ; for (i nt i =0; i { if(A[i ]>0) { de m++; min = i; bre ak; } } if (de m == 0) retur n -1; for (i =i+1; i { if((A[i]>0)&&(A[mi n]>A[i])) { min = i; } } retur n 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) { fl oat min = a[0]; for (i nt i =1; i { min = (min>a[i])? a[i]:min; } retur n 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 { if(a[i ]% 2==0) { retur n a[i]; } } retur n -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 if (n% i==0) retur n 0; retur n 1; } retur n 0; } int nguyentodau(int a[], int n) { for(int i=0; i { if(intto(a[i])==1) { retur n a[i]; } } retur n -1; } 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 s ohoanthie n(int n) { int tong=0 ; for (i nt i =1 ; i if(n% i==0) tong = tong + i; if (tong == n) retur n 1; retur n 0; } int hoanthiendau(int a[],i nt n) { for(int i=0; i if(s ohoanthien(a[i])==1) retur n a[i]; retur n -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(fl oat a[], int n) { for (i nt i =0; i { if (a[i]) { retur n a[i]; } } retur n 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 DuongCuoi Cung(fl oat a[], int n) { for (i nt i =n -1; i>=0; i --) { if (a[i]>0 ) { } retur n -1; } retur n a[i]; } 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 nguyentoc uoi(int a[],int n) { for(int i=n-1; i>=0; i--) { if(intto(a[i])==1) { retur n a[i]; } } retur n -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 . int hoanthiencuoi(int a[],int n) { for(int i=n-1; i>=0; i--) { if(s ohoanthien(a[i])==1) { retur n a[i]; } } retur n -1; } 150/ Hãy tìm giá trị âm lớn nh ất tr ong mảng c ác s ố thực . Nếu mảng ko có giá trị âm thì tr ả về giá trị 0 . float AmMax(fl oat a[], int n) { fl oat max; int de m =0; for (i nt i =0; i { if(a[i ] { de m++; bre ak; } } if (de m ==0) { } els e { retur n 0; max = a[i]; for (i=i+1; i { if((a[i] { max = a[i]; } } retur n 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 nguyentol onnhat(i nt a[],int n) { int de m=0; int max; for(int i=0; i { if(intto(a[i])==1) { de m ++; max = i ; bre ak; } } if (de m ==0) { } els e { retur n 0; for (i=i+1; i { if ((intto(a[i]) ==1) && (a[max] { max = i ; } } } retur n 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 de m=0; int min; for(int i=0; i { if(s ohoanthien(a[i])==1) { de m ++; min = i; bre ak; } } if (de m ==0) { } els e { retur n 0; for (i=i+1; i { if ((s ohoanthien(a[i])==1 ) && (A [min]>a[i])) { min = i; } } } retur n 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 de m=0; int min; for(int i=0; i { if(a[i ]% 2==0) { de m ++; min = i; bre ak; } } if (de m ==0) { } els e { retur n -1; for (i=i+1; i { if ((a[i]% 2==0) && (a[min]>a[i])) { min = i; } } } retur n min; } 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(fl oat a[], int n) { int VTmax = -1; for (i nt i =0; i { if(a[i ] { VTmax = i; bre ak; } } for (i =i+1; i { if((a[i] { VTmax = i; } } retur n 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 . voi d kcxanhat(fl oat *A , i nt n , fl oat x ) { double kcxn = (fabs )(A[0 ] - x); int j = 0; for(int i = 0 ; 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 { if((fabs )(A[j] - x) == kcxn) { printf("% .2f ",A[j]); } } printf(" "); } 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 . voi d vi trigannhat(float *A , int n , float x) { double kcgn = (fabs )(A[0] - x); int j = 0; for (int i = 0 ; i { if((fabs )(A[i ] - x) { kcgn = (fabs )(A[i] - x); j = i ; } } printf("Cac vi tri c o gia tri gan % .2f nhat l a :",x); for (j;j { if((fabs )(A[j] - x) == kcgn) { pri ntf("% d",j); } } printf(" "); } 157/ hãy tìm đoạn [a,b] s ao cho đoạn này chứa tất cả các giá trị trong mảng . voi d ti mdoan(s t* A, int n) { s t max = *A; s t mi n = *A; for (int i=1; i { max = (max mi n = (mi n>*(A+i))? min:* (A+i); } printf("\t[ % .1f , % .1f ] l a doan c hua c ac gia tri tr ong mang ", max, mi n); } 158 hãy tìm giá trị x s ao cho đoạn [-x,x] chứa tất cả các giá trị trong mảng . float ti mx(float* A, int n) { float x = *A; for (int i=1; i { x = (x>(fabs )(*(A+i)))? x : (fabs )(*(A+i)); } re turn 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(fl oat *A , int n) { for (int i = 0 ; i { i f(A[i] > 2003) { return A[i]; } } re turn 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 c uoicung(fl oat *A , i nt n) { for(n;n>=0;n--) { if(A[n] > -1 & & A[n] { retur n 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 dautie ntr ong doan(int a[], i nt n, i nt x, int y)[/ FO NT] [FONT="]{[/ FONT] [FONT="] int de m =0;[/ FONT] [FONT="] for(int i=0; i [FONT="] {[/ FONT] [FONT="] if ((a[i]>=x)&&(a[i ] [FONT="] {[/ FONT] [FONT="] de m++;[/ FO NT] [FONT="] bre ak;[/ FO NT] [FONT="] }[/ FONT] [FONT="] }[/ FONT] [FONT="] if (de m == 0)[/ FONT] [FONT="] {[/ FONT] [FONT="] retur n x;[/FONT] [FONT="] }[/ FONT] [FONT="] retur n a[i];[/ FO NT] [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 { if (a [i]==((a[i -1])*a[i+1])) { retur n i; } } retur n -1; } 163/ tìm số chính phương đầu tiê n trong mảng 1 chiề u số ngyê n . int s ochinhphuong(int a) { for (i nt i =1; i { if (i*i == a) { retur n 1; } } retur n 0; } int chinhphuong dautien(int *A, int n) { for (i nt i =0; i { if (s ochinhphuong(*(A+i))==1) { retur n *(A+i ); } } retur n -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 s oganh(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) { retur n 1; } retur n 0; } int bai164(int a[], int n) { for (i nt i =0; i { if (s oganh(a[i])==1) { retur n a[i]; } } retur n -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 chus odau(int n) { int dv; while (n>=10) { dv=n% 10; n=n/10; } if (n% 2==0) retur n 0; retur n 1; } int daule dautien(int a[], int n) { for(int i=0 ; i { if ( chus odau(a[i])==1 ) { retur n a[i]; } } retur n 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) { retur n 1; } do { du = n % 2 ; if (du != 0) { retur n 0; } n = n/2; } while (n>=2); retur n 1; } int bai166(int a[], int n) { for(int i=0 ; i { if (dang2k(a[i ])==1) { retur n a[i]; } } retur n 0; } 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 toanchus ole(int n) { int dv; while (n!=0) { dv = n % 10; if (dv % 2 == 0) { retur n 0; } n=n/10; } retur n 1; } int bai167(int a[], int n) { int max; int de m =0; for(int i=0 ; i { if (toanchus ole(a[i])==1 ) { max = a[i]; de m ++; bre ak; } } if (de m == 0) { retur n 0; } for(; i { if (toanchus ole(a[i])==1 ) { } retur n max; } max = ( max>a[i ]) ? max : a[i] ; 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) retur n 1; while (n>=5 ) { du = n% 5; n=n/5; if (du != 0) retur n 0; } retur n 1; } int bai168(int a[], int n) { int max; int de m =0; for(int i=0 ; i { if (dang5k(a[i ])==1) { max = a[i]; de m ++; bre ak; } } if (de m == 0) { retur n 0; } for(;i { if (dang5k(a[i ])==1) { max = (max>a[i])?max:a[i] ; } } retur n 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 de m= 0; for (i nt i =0; i { if (a[i]% 2 !=0) { min = a[i]; de m ++; bre ak; } } if (de m ==0) retur n 0; for (i ; i if (a[i]% 2!=0 && min>a[i ]) min = a[i]; retur n min; } int bai169(int a[], int n) { int lemin = lenhonhat(a,n); if (lemin == 0) retur n -1; retur n le min - 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 { max=(max>a[i ]) ? max :a[i]; } retur n max; } int intto(int a) { for (i nt i =2; i { if (a% i==0) retur n 0; } retur n 1; } int bai170(int a[], int n) { int max = l onnhat(A, n); for (i nt i = max + 1; i>max; i++) { if (intto(i) == 1) bre ak; } retur n i; } 171 Hãy tìm ước chung lớn nhất của tất cả ptử trong mảng nguyê n . int s onhonhat(int a[], i nt n) { int min = a[0]; for (i nt i =1; i min = (min retur n min; } voi d uocs ocuami n(int a[], int n, int b[], int & m , int min) { m = 0; for (i nt i =1; i { if (min % i == 0 ) { b[m]=i; m++; } } } int uocs ocuamang(int a[], int b[], int n, int m) { for (i nt i =0; i { if(a[i ]% b[m-1] !=0) { m--; i=-1; } if (m retur n 1; } retur n b[m-1 ]; } 172/ Hãy tìm bội số chung nhỏ nhất trong mảng nguyê n . int s olonnhat(int A[], int n) { int max=A[0]; for (i nt i =1; i { if ((max == 0 )||(A[i]==0)) { printf("Ban da vi pham l oi the doi voi bai nay "); exit (0); } max=max>A[i]? max:A[i]; } retur n max; } int boichungcuamang (int A[], int n, int max) { int bois o = max ; for (i nt i =0; i { if (bois o % A[i] != 0) { bois o = bois o + max; i=-1; } } retur n bois o; } 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,te mp; for (i =0;i { te mp = abs (a[i]); do { donvi = te mp% 10; te mp = te mp/10; So[donvi ]++; } while (te mp!=0 ); } int VTMax = 0; for (i =0; i { VTMax = (So[VTMax]>So[i ])?VTMax:i; } retur n 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 voi d LietKe(int a[], int n) { int i,j; for (i =0;i { for (j=i+1;j { if (a[i] { printf(" Cap vi tri ",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. voi d LietKe(int a[], int n) { int i,j,kcgn = (abs )(a[0] - a[1]); for (i =0;i { for (j=i+1;j { if ((abs )(a[i ]-a[j]) { kcgn = (abs )(a[i] -a[j]); } } } printf("Nhung cap gia tri gan nhau nhat: "); for (i =0;i { for (j=i+1;j { if ((abs )(a[i ]-a[j])==kcgn) { ",a[i],a[j],i,j); } } } } 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 . voi d xuatk q(fl oat a[],int m) { for (i nt i =0;i { if (a[i] printf(" % .2f ", a[i]); } } 177/ Liệt kê các số trong mảng thực thuộc [x,y] cho trước . voi d LietKetTr ongDoanXY(fl oat a[], int n, float x, fl oat y) { for (i nt i =0; i { if (x { printf("% .2f",a[i]); } } } 178 Liệ t kê các số chẵn trong mảng nguyê n thuộc [x,y] . voi d LietKetChanTr ong DoanXY(int a[], int n, int x, int y) { for (i nt i =0; i { if (a[i]% 2 == 0 && x { 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 s au nó . voi d LietKe(int a[], int n) { int flag = 0; for (i nt i =0; i { if (a[i]>abs (a[i-1 ])) { fl ag =1; printf(" % 4d", a[i]); } } if (flag == 0) { retur n; } printf("Mang ko c o gia tri do"); } 180 Liệ t kê các giá trị thỏa: nhỏ hơn trị tuyệ t đối của giá trị đứng liề n s au 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 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 (i nt i =0; i { s = s + A[i]; } retur n s ; } 201/ Tổng các ptử dương trong mảng int Tong (int A[], i nt n) { int s = 0; for (i nt i =0; i { if (A[i]>0 ) { s =s +A[i ]; } } retur n 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) { retur n 0; retur n 1; } int tong daule(int A[], i nt n) { int s =0; for (i nt i =0; i { if (daule(A[i])==1) { s = s + A[i]; } } retur n s ; } 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) { retur n 1; } retur n 0; } int tong(int A[], int n) { int s =0; for (i nt i =0; i { if (hangchuc5(A[i])==1 ) { s = s + A[i]; } } retur n s ; } 204/ Tổng các ptử lớn hơn ptử đứng liề n trước nó int tonggiatri(int A[], i nt n) { int s = 0 ; for (i nt i =1; i { if (A[i]>A[i-1]) { s =s +A[i ]; } } retur n s ; } 205/ Tổng các ptử lớn hơn trị tuyệ t đối của ptử liề n s au nó int tonggiatri(int A[], i nt n) { int s =0; for (i nt i =0; i { if ( A[i] > abs (A[i +1]) ) { s =s +A[i ]; } } retur n s ; } 206/ Tổng các ptử lớn hơn ptử xung quanh int tonggiatri(int A[], i nt n) { int s =0; for (i nt i =0; i { if (i==0 && A[i]>A[i+1]) { s = s + A[i]; } els e if (i!=0 && A[i]>A[i+1] && A[i] > A[i -1]) { s = s + A[i]; } els e if (i==n-1 && A[i] > A[i-1]) { s = s + A[i]; } } retur n 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 (i nt i = 0; i { if (i==0 && A[i]!=A[i +1]) { s = s + A[i]; } els e if (i==n-1 && A[i]!=A[i -1]) { s = s + A[i]; } els e if ((A[i]A[i+1] && A[i]>A[i-1]) ) { s = s + A[i]; } } retur n s ; } 208/ Tổng các ptử chính phương int s ochinhphuong(int n) { int can = s qr t(n); if (can*can == n) retur n 1; retur n 0; } int Tong(int* A, int n) { int s =0; for (i nt i = 0; i { if (s ochinhphuong(A[i])==1) { s =s +A[i ]; } } retur n s ; } 209/ Tổng các ptử đối xứng int s odoixung(int n) { int donvi , tam = n; int s odaonguoc = 0; while(tam!=0) { donvi = tam% 10; s odaonguoc = s odaonguoc*10 + donvi; tam = tam/10; } if (s odaonguoc == n) { retur n 1; } retur n 0; } int tong(int A[], int n) { int s =0; for (i nt i = 0; i { if (s odoixung(A[i])==1) { s =s +A[i ]; } } retur n s ; } 210/ Tổng các ptử có chữ số đầu là chẵn int s odauchan(int n) { while(n>=10) { n=n/10; } if (n% 2 == 0) { retur n 1; } retur n 0; } int tong(int A[], int n) { int s =0; for (i nt i = 0; i { if (s odauchan(A[i])==1) { s =s +A[i ]; de m ++; } } retur n s ; } 211/ Trung bình cộng các số nguyê n tố int s onguyento(int n) { for(int i=2; i { if (n % i == 0) retur n 0; } retur n 1; } float TBCong (int A[], int n) { int s =0; fl oat de m=0; for (i nt i = 0; i { if (s onguyento(A[i])==1 ) { s =s +A[i ]; de m ++; } } if (de m == 0) { retur n 0; } printf("Mang ko c o s o thoa ye u c au de"); retur n s /de m; } 212/ Trung bình cộng các số dương float TrungBinhCong (int A[], int n) { int s =0; fl oat de m=0; for (i nt i = 0; i { if (A[i]>0 ) { s =s +A[i ]; de m ++; } } if (de m == 0) { printf("Mang ko c o s o thoa ye u c au de"); retur n 0; } retur n s /de m; } 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; fl oat de m=0; for (i nt i = 0; i { if (A[i]>x) { s =s +A[i ]; de m ++; } } if (de m == 0) { printf("Mang ko c o s o thoa ye u c au de"); retur n 0; } retur n s /de m; } 214/ Trung bình nhân các số dương float TB NhanDuong(i nt A[], int n, int m) { int T=1; fl oat de m=0; for (i nt i = 0; i { if (A[i]>0 ) { T*=A[i]; de m ++; } } if (de m == 0) { printf("Mang ko c o s o thoa ye u c au de"); retur n 0; } retur n pow(T,1.0/ de m); } 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 (i nt i = 0; i { for (int j=i +1;i { s = s + abs (A[i ]-A[i+1 ]); y++; } } retur n pow(s ,1.0/y); } Kĩ thuật đế m 216/ Đế m số lượng chẵn trong mảng int de ms ochan(int a[], int n) { int de m = 0; for (i nt i =0; i { if (a[i]% 2 == 0) { de m ++; } } retur n de m; } 217/ Đế m số dương chia hế t cho 7 trong mảng int de ms ochan(int a[], int n) { int de m = 0; for (i nt i =0; i { if (a[i]>0 && a[i]% 7 == 0) { de m ++; } } retur n de m; } 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) { retur n 1; } retur n 0; } int de m (int a[], int n) { int de m = 0; for (i nt i =0; i { if (a[i] { bre ak; } if (SoDoiXung(a[i ])==0) { de m ++; } } retur n de m; } 219/ Đế m số lần xuất hiệ n của giá trị x trong mảng int de m (int a[], int n,int x) { int de m = 0; for (i nt i =0; i { if (a[i] ==x) { de m ++; } } retur n de m; } 220 Đếm s ố lượng giá trị tận cùng bằng 5 tr ong mảng int de m (int a[], int n) { int de m = 0; for (i nt i =0; i { if (a[i]% 10 == 5) { de m ++; } } retur n de m; } 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 de mchan = 0; for (i nt i =0; i { if (a[i]% 2 == 0) { de mc han++; } } if (de mchan > n - de mchan) { retur n -1; } els e if (n - de mchan == de mc han) { retur n 0; } retur n 1; } 222/ Đế m ptử lớn hơn hay nhỏ hơn ptửs xung quanh trong mảng int De m(int A[], int n) { int i=0,j=0, De mTam=0; for (i =0; i { if (i==0 && A[i]!=A[i +1]) { De mTam++; } els e if ( i == n-1 && A[i-1]!=A[i]) { De mTam++; } els e if ((A[i-1]>A[i] && A[i]A[i+1]) ) { De mTam++; } } retur n De mTam; } 223: Đế m số nguyê n tố trong mảng int SoNguyenTo(i nt a) { if (a { retur n 0; }
Bạn đang đọc truyện trên: AzTruyen.Top