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);
}
}
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;
}
}
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;
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;
}
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 .
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;
}
}
}
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;
}
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++)
{
if((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 vitrigannhat(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)
{
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++)
{
if(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]
[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)
{
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;
}
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;
}
}
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++)
{
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;
}
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);
}
}
}
}
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 xuatkq(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
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;
}
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])
{
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;
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];
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 ++;
}
}
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)
{
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)
{
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;
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++)
{