
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)&&(mi n>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(fl oat 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 .