Nếu mảng ko có số hoàn thiện thì trả về giá trị -1.. Nếu mảng không có giá trị dương thì trả về giá trị là -1... Nếu mảng ko có giá trị chẵn thì hàm trả về -1... Nếu mảng ko có số hoàn t
Trang 1Chuyê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
voi d NhapMang(float a[], int &n)
{
printf("Nhap so phan tu: ");
scanf ("% d",&n);
for (i nt 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
voi d NhapMang(i nt a[], int &n)
{
printf("Nhap so phan tu: ");
scanf ("% d",&n);
for (i nt 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
voi d XuatMang(float a[], int n)
{
for (i nt 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
voi d XuatMang(i nt a[], int n)
{
for (i nt 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
voi d LietKe GiaTri Chan(int a[], int n)
{
for (i nt 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
voi d LietKeVi TriAm(int a[], int n)
{
for (i nt i =0;i<n;i++)
{
if(a[i ]<0)
printf("% 4d",i);
}
}
Trang 2Kĩ 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 duong dau(float a[], int n)
{
for (i nt i =0; i<n; 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<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(i nt a[] , int n)
{
for(int i=0; i<n; i ++)
{
if(a[i ]% 2==0)
{
retur n i;
}
Trang 3}
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 sohoanthie n(int n)
{
int tong=0 ;
for (i nt i =1 ; i <n; 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(sohoanthien(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<n; i++)
{
if(a[i ]>0)
{
de m ++;
bre ak;
}
}
if (de m !=0 )
{
min = a[i];
for (i=i+1; i<n; 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<n; i++)
{
if(A[i ]>0)
{
de m++;
min = i;
Trang 4bre ak;
}
}
if (de m == 0)
retur n -1;
for (i =i+1; i<n; 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<n; 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<n; 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<n; 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<n; i ++)
{
if(intto(a[i])==1)
{
retur n a[i];
}
}
retur n -1;
}
Trang 5145/ 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 sohoanthie n(int n)
{
int tong=0 ;
for (i nt i =1 ; i <n; 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<n; i ++)
if(sohoanthien(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<n; i++)
{
if (a[i])<0)
{
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 a[i];
}
}
retur n -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 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
Trang 6int hoanthiencuoi(int a[],int n)
{
for(int i=n-1; i>=0; i )
{
if(sohoanthien(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<n; i++)
{
if(a[i ]<0)
{
de m++;
bre ak;
}
}
if (de m ==0)
{
retur n 0;
}
else
{
max = a[i];
for (i=i+1; i<n; i++)
{
if((a[i]<0)&&(max<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<n; i ++)
{
if(intto(a[i])==1)
{
de m ++;
max = i ;
bre ak;
}
}
if (de m ==0)
{
retur n 0;
}
else
{
for (i=i+1; i<n; i++)
{
if ((intto(a[i])==1) && (a[max]<a[i]))
{
max = i ;
Trang 7}
}
}
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<n; i ++)
{
if(sohoanthien(a[i])==1)
{
de m ++;
min = i;
bre ak;
}
}
if (de m ==0)
{
retur n 0;
}
else
{
for (i=i+1; i<n; i++)
{
if ((sohoanthien(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<n; i ++)
{
if(a[i ]% 2==0)
{
de m ++;
min = i;
bre ak;
}
}
if (de m ==0)
{
retur n -1;
}
else
{
for (i=i+1; i<n; i++)
{
if ((a[i]% 2==0) && (a[min]>a[i]))
{
min = i;
}
}
}
retur n min;
}
Trang 8154/ 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<n; i++)
{
if(a[i ]<0)
{
VTmax = i;
bre ak;
}
}
for (i =i+1; i<n; i++)
{
if((a[i]<0)&&(a[VTmax]<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 < 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
voi d 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 c o gia tri gan % 2f nhat l a :",x);
for (j;j<n;j++)
{
if((fabs)(A[j] - x) == kcgn)
Trang 9{
pri ntf("% 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
voi d ti mdoan(st* A, int n)
{
st max = *A;
st mi n = *A;
for (int i=1; i<n; i ++)
{
max = (max<*(A+i))?max:*(A+i );
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\n", max, mi n);
}
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 ti mx(float* A, int n)
{
float x = *A;
for (int i=1; i<n; 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 < n;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] < 0)
{
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)[/ FONT]
[FONT="]{[/ FONT]
[FONT="] int de m =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="] de m++;[/ FONT]
Trang 10[FONT="] bre ak;[/ FONT]
[FONT="] }[/ FONT]
[FONT="] }[/ FONT]
[FONT="] if (de m == 0)[/ FONT]
[FONT="] {[/ FONT]
[FONT="] retur n x;[/FONT]
[FONT="] }[/ FONT]
[FONT="] retur n 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]))
{
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 sochinhphuong(int a)
{
for (i nt i =1; i<a; i++)
{
if (i*i == a)
{
retur n 1;
}
}
retur n 0;
}
int chinhphuong dautien(int *A, int n)
{
for (i nt i =0; i<n; i++)
{
if (sochinhphuong(*(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 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)
{
retur n 1;
}
retur n 0;
}
int bai164(int a[], int n)
Trang 11{
for (i nt i =0; i<n; i++)
{
if (soganh(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 chusodau(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<n; i++)
{
if ( chusodau(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<n; i++)
{
if (dang2k(a[i ])==1)
{
retur n a[i];
}
}
retur n 0;
}