SlideShare ist ein Scribd-Unternehmen logo
1 von 57
Downloaden Sie, um offline zu lesen
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
 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 LietKeGiaTri 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);
         }
 }
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 duong dau(float a[], int n)
    {
           for (i nt 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(i nt 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 (i nt 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)
{
       fl oat min;
       int dem= 0;
       for (i nt 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, i nt n)
{
       int min;
       int dem =0 ;
       for (i nt 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[mi n]>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)
{
       fl oat min = a[0];
       for (i nt 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 (i nt i =1 ; i <n; i++)
                if(n% i==0)
                          tong = tong + i;
       if (tong == n)
                return 1;
       return 0;
}
int hoanthiendau(int a[],i nt 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(fl oat a[], int n)
{
       for (i nt 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 DuongCuoi Cung(fl oat a[], int n)
{
       for (i nt 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(fl oat a[], int n)
 {
        fl oat max;
        int dem =0;
        for (i nt 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 nguyentol onnhat(i nt 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(fl oat a[], int n)
 {
        int VTmax = -1;
        for (i nt 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 .
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 co gia tri gan % .2f nhat l a :",x);
          for(j;j<n;j++)
          {
                   if((fabs)(A[j] - x) == kcgn)
{
                           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 chua cac gia tri trong mangn", 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));
          }
         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(fl oat *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(fl oat *A , i nt 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 dautientrong doan(int a[], i nt n, i nt 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 (i nt i =1; i<a; i++)
        {
                 if (i*i == a)
                 {
                          return 1;
                 }
        }
        return 0;
}
int chinhphuong dautien(int *A, int n)
{
        for (i nt 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 (i nt 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 (i nt 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 (i nt i =2; i<a; i++)
        {
                 if (a% i==0)
                          return 0;
        }
        return 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)
                        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[], i nt n)
{
        int min = a[0];
        for (i nt i =1; i<n; i++)
                 min = (min < a[i])? min: a[i];
        return min;
}
voi d uocsocuami n(int a[], int n, int b[], int &m , int min)
{
        m = 0;
        for (i nt i =1; i<=min; i++)
        {
                 if (min % i == 0 )
                 {
                          b[m]=i;
                          m++;
                 }
        }
}
int uocsocuamang(int a[], int b[], int n, int m)
{
        for (i nt 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 (i nt i =1; i<n; i++)
        {
                 if ((max == 0 )||(A[i]==0))
                 {
                          printf("Ban da vi pham l oi the doi voi bai nayn");
                          exit (0);
                 }
                 max=max>A[i]? max:A[i];
        }
        return max;
}
int boichungcuamang (int A[], int n, int max)
{
        int boiso = max ;
        for (i nt 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 .
voi d 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.
voi d 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 .
voi d xuatk q(fl oat a[],int m)
{
for (i nt 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 .
voi d LietKetTrongDoanXY(fl oat a[], int n, float x, fl oat y)
{
        for (i nt 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] .
voi d LietKetChanTrong DoanXY(int a[], int n, int x, int y)
{
        for (i nt 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ó .
voi d LietKe(int a[], int n)
{
        int flag = 0;
        for (i nt i =0; i<n; i++)
        {
                 if (a[i]>abs(a[i-1 ]))
                 {
                          fl ag =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 (i nt 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[], i nt n)
 {
 int s = 0;
         for (i nt 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 tong daule(int A[], i nt n)
 {
        int s=0;
        for (i nt 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 (i nt 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[], i nt n)
{
int s = 0 ;
        for (i nt 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[], i nt n)
{
       int s=0;
       for (i nt 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[], i nt n)
{
       int s=0;
       for (i nt 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 (i nt 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 (i nt 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 (i nt 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 (i nt 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;
       fl oat dem=0;
       for (i nt 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;
        fl oat dem=0;
        for (i nt 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;
        fl oat dem=0;
        for (i nt 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 TB NhanDuong(i nt A[], int n, int m)
{
        int T=1;
        fl oat dem=0;
        for (i nt 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 (i nt 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 (i nt 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 (i nt 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 (i nt 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 (i nt 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 (i nt 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 (i nt 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(i nt a)
{
       if (a<=1 )
       {
                return 0;
       }
       for (i nt 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 (i nt 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++)
      {
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)
 voi d lietke(int *a, int n)
 {
          for (i nt 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("Gi a tri % d co tan suat xuat hien la % dn", a[i ], dem );
                 }
         }
 }

231/ Hãy liệt kê các giá trị xuất hiện đúng 1 lần trong mảng
 voi d lietke(int a[], int n)
 {
          int c[100];
          int dem[100];
          int vitri = 0;
          for (i nt 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("Gi a tri chi xuat hien dung 1 l annt");
          for (i nt k=0 ; k<vi tri; 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)
 voi d lietke(int a[], int n)
 {
          int c[100];
          int dem[100];
          int vitri = 0;
          for (i nt 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("Gi a tri chi xuat hien dung 1 l annt");
       for (i nt k=0 ; k<vi tri; 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
voi d lietke(int *a, int n)
{
         for (i nt 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("Gi a tri % d co tan suat xuat hien la % dn", 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[],i nt 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++)
               {
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
voi d 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 Bn",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 An",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[],i nt 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
int MotGi aTriXuatHienNhieuNhat(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])
                                  {
                                           fl ag[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
voi d LietKe(int a[],int n)
{
        int flag [100]={0},i,j,Dem1;
//Tien hanh gan mảng fl ag == 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])
                                  {
                                           fl ag[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 == fl ag[i])
                 {
                           printf(" % d ",a[i]);
                 }
        }
}

239/ Hãy đếm số lượng số nguyên tố phân biệt trong mảng
int SoNguyenTo(i nt 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 )
                {
                         fl ag = 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)
                {
                         fl ag = 1 ;
                         break;
                }
        }
        return flag;
}

242/ Ktra mảng có số chẵn ko? Có trả về 1, ko có trả về 0 .
int kiemtrachan(int A[] , i nt n)
 {
        int flag = 0;
        for(int i=0 ; i<n ;i++)
        {
                if(A[i ]% 2 == 0)
                {
                        fl ag = 1 ;
                        break;
                }
        }
        return flag;
 }

243/ Ktra mảng có số ng tố ko? Có trả về 1, ko có trả về 0 .
 int SoNguyenTo(i nt a)
 {
        if (a<=1 )
        {
                 return 0;
        }
        for (i nt 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)
                 {
                          fl ag = 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 (i nt 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)
                  {
                            fl ag = 1 ;
                             break;
                  }
}
        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)
                {
                        fl ag = 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])
               {
                        fl ag = 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)
                {
                        fl ag = 0 ;
                        break;
                }
        }
        return flag;
}

248/ Ktra mảng có tăng dần hay ko?
int kttang dan(int A[] , int n)
{
        int flag = 1;
        for(int i=0 ; i<n-1 ;i++)
        {
                if(A[i ] > A[i+1])
                {
                         fl ag = 0 ;
                         break;
                }
        }
        return flag;
}

249/ Ktra mảng có giảm dần hay ko?
int ktgiam(int A[] , i nt n)
{
int flag = 1;
       for(int i=0 ; i<n-1 ;i++)
       {
               if(A[i ] < A[i+1])
               {
                        fl ag = 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(i nt 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)
               {
                       fl ag = 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[] , i nt 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])
                        {
                                 fl ag = 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[] , i nt 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 ]))
               {
                        fl ag = 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 ++)
{
                for(int j = 0 ; j < m ;j++)
                {
                        if(A[i ] == B [j])
                        {
                                 dem++;
                        }
                }
        }
        if(dem == n)
        {
               fl ag = 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])
                        {
                                 fl ag = 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
voi d sapxep(int a[],int n)
{
        for (i nt 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
voi d sapxep(int a[],int n)
{
        for (i nt 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;
                       }
               }
       }
}

257/ Sắp xếp lẻ tăng dần nhưng giá trị khácgiữ nguyên vị trí
voi d sapxep(int a[],int n)
{
        for (i nt 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(i nt a)
{
        if (a<=1 )
        {
                 return 0;
        }
        for (i nt i =2; i<a; i++)
        {
                 if (a% i==0)
                 {
                          return 0;
                 }
        }
        return 1;
}
voi d sapxep(int a[],int n)
{
        for (i nt 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 ;
for (i nt i =1 ; i <n; i++)
                 if(n% i==0)
                           tong = tong + i;
        if (tong == n)
                 return 1;
        return 0;
}
voi d sapxep(int a[],int n)
{
        for (i nt 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?
voi d sapxep(int a[],int n)
{
        for (i nt 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;
                          }
                 }
        }
}
voi d KetQua(int a[],int b[],i nt na,int nb)
{
        if (na != nb)
        {
                 printf("ko phai!");
                 return ;
        }
        sapxep(a,na);
        sapxep(b,nb);
        for (i nt 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í
voi d sapxep(int a[],int n)
{
        for (i nt i =0;i<n;i++)
        {
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
voi d sapxep(int a[],int n)
{
        for (i nt 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
voi d sapxep(int a[],int n)
{
        for (i nt 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
voi d sapxep(int a[],int n)
{
        for (i nt 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;
}
               }
        }
}
voi d 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 (i nt 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
voi d sapxep(int a[],int n)
{
        for (i nt 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;
                         }
                 }
        }
}
voi d 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 (i nt i =0;i<nc;i++)
        {
                 if (vta >= 0 && vtb >= 0)
                 {
                         if (a[vta] > b[vtb])
                         {
                                  c[i] = a[vta];
                                  vta--;
}
                         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 .
voi d themgiatri(int a[], i nt &n, i nt 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 .
 voi d nhapmang(int a[], int &n)
 {
         printf("Nhap mang 1 chieun");
         printf("Nhap n : "); scanf("% d",&n);
         while (n<=1 )
         {
                  printf("Nhap l ai 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 .
 voi d ChenXMang Tang(int a[], int &n, int x)
{
        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
voi d nhapmang(int a[], int &n)
{
        printf("Nhap mang 1 chieun");
        printf("Nhap n : "); scanf("% d",&n);
        while (n<=1 )
        {
                 printf("Nhap l ai 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
voi d Xoavitri(int a[], i nt &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
voi d xoavitri(float a[], int &n, int k)
{
        for (i nt i =k; i<n; i ++)
        {
a[i] = a[i +1];
        }
        n--;
}
float lonnhat(float a[], int n)
{
        fl oat max = a[0];
        for (i nt i =1; i<n ; i++)
        {
                 max=(max<a[i ])?a[i]:max;
        }
        return max;
}
voi d xoamang(fl oat a[], int &n)
{
        fl oat max = lonnhat(a,n);
        for (i nt i =0; i<n; i++)
        {
                 if (a[i]==max)
                 {
                          xoavi tri(a,n,i );
                          i--;
                 }
        }
}

273/ Xóa tất cả số âm trong mảng .
voi d xoavitri(float a[], int &n, int k)
{
        for (i nt i =k; i<n; i ++)
        {
                 a[i] = a[i +1];
        }
        n--;
}
voi d xoamang(fl oat a[], int &n)
{
        for (i nt i =0; i<n; i++)
        {
                 if (a[i]<0 )
                 {
                          xoavi tri(a,n,i );
                          i--;
                 }
        }
}


274/ Xóa tất cả số chẵn trong mảng .
voi d xoavitri(float a[], int &n, int k)
{
        for (i nt i =k; i<n; i ++)
        {
                 a[i] = a[i +1];
        }
        n--;
}
voi d xoamang(fl oat a[], int &n)
{
        for (i nt i =0; i<n; i++)
        {
                 if (a[i]% 2==0)
                 {
                          xoavi tri(a,n,i );
                          i--;
                 }
        }
}
275/ Xóa tất cả số chính phương trong mảng .
 voi d xoavitri(int a[], i nt &n, int k)
 {
         for (i nt 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;
 }
 voi d xoamang(int a[], int &n)
 {
         for (i nt i =0; i<n; i++)
         {
                  if (sochinhphuong(a[i])==1)
                  {
                           xoavi tri(a,n,i );
                           i--;
                  }
         }
 }

276/ Xóa tất cả các ptử trùng với x .
voi d xoavi tri(fl oat a[], int &n, float k)
{
        for (int i=k; i <n; i++)
        {
               a[i ] = a[i+1];
        }
        n--;
}
voi d xoamang(float a[], int &n, fl oat x)
{
        for (int i=0; i <n; i++)
        {
                if (a[i] ==x)
                {
                         xoavi tri(a,n,i );
                         i--;
                }
        }
}

277/ Xóa tất cả số nguyên tố trong mảng .
voi d xoavi tri(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;
        }
return 1 ;
}
voi d 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ử .
    voi d xoavitri(int a[], i nt &n, int k)
    {
            for (i nt i =k; i<n; i ++)
            {
                     a[i] = a[i +1];
            }
            n--;
    }
    voi d xoamang(int a[], int &n)
    {
            for (i nt i =0; i<n-1; i++)
            {
                     for(int j=i+1 ; j<n;j++)
                     {
                              if (a[i]==a[j])
                              {
                                       xoavi tri(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 .
    voi d xoavitri(int a[], i nt &n, int k)
    {
           for (int i=k; i <n; i++)
           {
                   a[i] = a[i+1];
           }
           n--;
    }
    voi d 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])
                            {
                                     xoavi tri(a,n,j);
                                     j--;
                                     test=1;
                            }
                   }
                   if (test == 1)
                   {
                            xoavi tri(a,n,i); //Xóa luôn chính nó
}
      }
}


Kĩ thuật xử lý mảng
280/ Hãy đưa số 1 về đầu mảng .
voi d DoiCho(int a[], int n, int k)
{
        for(int i = k ; i>0; i--)
        {
                 a[i] = a[i -1];
        }
        a[0] = 1;
}
voi d duaMotvedau(int a[], int n)
{
        for (i nt 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 .
voi d duachanvedau(int a[], int k)
{
        int tam = a[k];
        for(int i = k ; i>0; i--)
        {
                a[i] = a[i -1];
        }
        a[0] = tam;
}
voi d 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;
}
voi d 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 )
                  {
dua0(a,i,vitrichancuoi); // vi tri i
                }
        }
}

282/ Đưa các số chia hết cho 3 về đầu mảng .
voi d 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;
}
voi d chiahetchoba(int a[], int n)
{
        for (i nt 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 .
voi d hoanvi(i nt &a, int &b)
{
        int tam = a;
        a = b;
        b =tam;
}
voi d DaoMang(int a[], int n)
{
        for (i nt 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 .
voi d hoanvi(i nt &a, int &b)
{
        int tam = a;
        a = b;
        b =tam;
}
voi d daochan(int a[], int n)
{
        for (i nt 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 .
voi d hoanvi(i nt &a, int &b)
{
        int tam = a;
        a = b;
b =tam;
}
voi d daoduong(int a[], i nt n)
{
        for (i nt 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 .
voi d dichtrai(int a[], int n)
{
        int tam = a[0];
        for (i nt 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

voi d dichphai (int a[], int n)
{
        int tam = a[n-1];
        for (i nt 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 .
voi d color (int a)
{
        HANDLE mau;
        mau = GetStdHandle(STD_OUTPUT_ HANDLE);
        SetConsoleTextAttri bute(mau,a);
}
voi d XuatChanVang LeTrang(int a[], int n)
{
        for (i nt i =0; i<n; i++)
        {
                 if (a[i]% 2==0)
                 {
                          col or(14);
                          printf("% 4d",a[i]);
                 }
                 else
                 {
                          col or(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 .
voi d chanlehaihang(int a[], int n)
{
        for (i nt i =0; i<n; i++)
{
               if (a[i]% 2==0)
               {
                       printf("% 4d",a[i]);
               }
       }
       printf("nt");
       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 .
voi d hoanvi(i nt &a, int &b)
{
        int tam = a;
        a = b;
        b =tam;
}
voi d 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 .
voi d mi nmax(int a[], int n, int &max, int &min)
{
        max=a[0];
        min=a[0];
        for (i nt i =1; i<n; i++)
        {
                 max=(max<a[i ])?a[i]:max;
                 min=(min>a[i])?a[i]:min;
        }
}
voi d 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 .
voi d thaysogannhat(fl oat &n)
{
int phannguyen = (int) (n) ;
       fl oat phanle = n - phannguyen;
       if (phanle <=0.5)
       {
               n = (fl oat)phannguyen;
       }
       else
       {
               n = (fl oat)phannguyen + 1;
       }
}
voi d biendoi(float a[], int n)
{
        for (i nt 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 .
voi d lietkecon(int a[], int n)
{
         int ChieuDai;
         for (i nt 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ử .
voi d lietkecon(int a[], int n)
{
         int ChieuDai;
         for (i nt 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[], i nt nb)
{
        for(int i=0; i<nb-1 ; i++)
        {
                if (b[i ]>b[i+1 ])
                          return 0;
        }
        return 1;
}
voi d xuatmangcon(int b[], int nb)
{
       for(int i=0; i<nb; i++)
       {
               printf("% 4d", b[i]);
       }
       printf("n");
}
voi d lietkecontang(int a[], int n)
{
         int ChieuDai;
         int b[100], nb;
         for (i nt 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 (i nt i =1; i<n; i++)
         {
                  max = max<a[i]?a[i]:max;
         }
         return max;
}
int ktramangtang (int b[], i nt nb)
{
         for(int i=0; i<nb-1 ; i++)
         {
                  if (b[i ]>b[i+1 ])
                            return 0;
         }
         return 1;
}
voi d xuatmangcon(int b[], int nb)
{
         for(int i=0; i<nb; i++)
         {
                  printf("% 4d", b[i]);
         }
         printf("n");
}
int ktracomax(int b[], i nt nb,i nt max)
{
         for (i nt i =0; i<nb;i++)
         {
                  if (b[i ]==max)
                  {
                            return 1;
                  }
         }
         return 0;
}
voi d lietkecontang(int a[], int n, int max)
{
       int ChieuDai;
       int b[100], nb;
       for (i nt 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[], i nt nb)
{
         for(int i=0; i<nb-1 ; i++)
         {
                  if (b[i ]>b[i+1 ])
                            return 0;
         }
         return 1;
}
voi d xuatmangcon(int b[], int nb)
{
         for(int i=0; i<nb; i++)
         {
                  printf(" % d ", b[i]);
         }
}
intt tongmangcon(int b[], i nt nb)
{
         intt s=0;
         for (i nt i =0; i<nb; i++)
         {
                   s = s + b[i];
         }
         return s;
}
voi d lietkecontang(int a[], int n)
{
         int chieudaicon, b[100], nb, tong ;
         for (i nt 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 = tong mangcon(b,nb);
                                    printf("tTong mang nay: % .2fn", tong);
                            }
}
       }
}


298/ Đếm mảng con tăng có độ dài lớn hơn 1 .
int ktramangtang (int b[], i nt nb)
{
       for(int i=0; i<nb-1 ; i++)
       {
                if (b[i ]>b[i+1 ])
                          return 0;
       }
       return 1;
}
voi d Demcontang(int a[], int n)
{
       int chieudaicon, b[100], nb;
       int dem=0;
       for (i nt 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 ti m: % dn", dem);
}

299/ Liệt kê dãy con toàn dương và độ dài lớn hơn 1 .
int ktramang duong(fl oat b[], int nb)
{
         for(int i=0; i<nb; i++)
                  if (b[i ]<0)
                            return 0;
         return 1;
}
voi d xuatmangcon(fl oat b[], int nb)
{
         for(int i=0; i<nb; i++)
                  printf(" % .2f ", b[i]);
         printf("n");
}
voi d lietkecontang(float a[], int n)
{
         int chieudaicon;
         fl oat b[100];
         int nb;
         for (i nt 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 (ktramang duong(b,nb)==1)
                                    xuatmangcon(b,nb);
                  }
}
}


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;
}
voi d Demcongiam(fl oat a[], int n)
{
       int chieudaicon;
       fl oat b[100];
       int nb;
       int dem=0;
       for (i nt 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 ti m: % dn", dem);
}


301/ Cho biết mảng a có phải là mảng con trong mảng b ko?
int Ktra(i nt a[], int b[], i nt 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;
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 .
voi d DayConToanDuongDaiNhat(int a[], i nt 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 .
voi d Tong MangConB ang M(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]);
                         }
}
        }
 }


305 * Tìm dãy con toàn dương có tổng lớn nhất .
 voi d DayConToanDuong TongLonNhat(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 .
voi d DayConTong LonNhat(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 l on 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 .
 voi d TaoMangB(i nt a[], int n)
 {
int b[100], nb=0;
        for (i nt 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 .
voi d TaoMangB(i nt a[], int n)
{
       int b[100], nb=0;
       for (i nt 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 .
voi d TaoMangB(i nt a[], int n)
{
       int b[100], nb=0;
       for (i nt 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(i nt a)
{
       if (a<=1 )
                return 0;
       for (i nt i =2; i<a; i++)
                if (a% i==0)
                         return 0;
       return 1;
}
voi d TaoMangB(i nt a[], int n)
{
       int b[100], nb=0;
       for (i nt i =0; i<n;i ++)
       {
                if (SoNguyenTo(a[i])==1)
                {
                         b[nb] = a[i];
                         nb++;
                }
       }
       xuatmang(b,nb);
}
Khoahoctunhien.net mang1chieu

Weitere ähnliche Inhalte

Was ist angesagt?

Câu hỏi trắc nghiệm hóa vô cơ y
Câu hỏi trắc nghiệm hóa vô cơ yCâu hỏi trắc nghiệm hóa vô cơ y
Câu hỏi trắc nghiệm hóa vô cơ ynanqayk
 
Đề thi Access mới nhất 2014 - Part 2
Đề thi Access mới nhất 2014 - Part 2Đề thi Access mới nhất 2014 - Part 2
Đề thi Access mới nhất 2014 - Part 2Vo Linh Truong
 
đáP án 24 đề tin
đáP án 24 đề tinđáP án 24 đề tin
đáP án 24 đề tinTtx Love
 
Sự lai hóa orbital
Sự lai hóa orbitalSự lai hóa orbital
Sự lai hóa orbitaldaodinh8
 
Khái niệm thông tin và dữ liệu
Khái niệm thông tin và dữ liệuKhái niệm thông tin và dữ liệu
Khái niệm thông tin và dữ liệuminhhai07b08
 
[SPSS] Syntax BTTH2 - Thống kê mô tả & Ước lượng thống kê
[SPSS] Syntax BTTH2 - Thống kê mô tả & Ước lượng thống kê [SPSS] Syntax BTTH2 - Thống kê mô tả & Ước lượng thống kê
[SPSS] Syntax BTTH2 - Thống kê mô tả & Ước lượng thống kê Yen Luong-Thanh
 
Tai lieu on_thi_hsg
Tai lieu on_thi_hsgTai lieu on_thi_hsg
Tai lieu on_thi_hsgKhắc Quỹ
 
Code và sơ đồ khối môn Phương pháp số và lập trình Fortran
Code và sơ đồ khối môn Phương pháp số và lập trình FortranCode và sơ đồ khối môn Phương pháp số và lập trình Fortran
Code và sơ đồ khối môn Phương pháp số và lập trình FortranLee Ein
 
Hợp chất dị vòng
Hợp chất dị vòngHợp chất dị vòng
Hợp chất dị vòngLam Nguyen
 
Slide bài giảng tổng hợp xác suất thống kê
Slide bài giảng tổng hợp xác suất thống kêSlide bài giảng tổng hợp xác suất thống kê
Slide bài giảng tổng hợp xác suất thống kêRurouni Kenshin
 
Công thức lượng giác cần nhớ
Công thức lượng giác cần nhớCông thức lượng giác cần nhớ
Công thức lượng giác cần nhớDoan Hau
 
Chuong 9 he voi moi truong ran long khi hoa keo
Chuong 9 he voi moi truong ran long khi  hoa keoChuong 9 he voi moi truong ran long khi  hoa keo
Chuong 9 he voi moi truong ran long khi hoa keoNguyen Thanh Tu Collection
 
Tích phân-5-Ứng dụng tích phân tính diện tích hình phẳng-pages-60-78
Tích phân-5-Ứng dụng tích phân tính diện tích hình phẳng-pages-60-78Tích phân-5-Ứng dụng tích phân tính diện tích hình phẳng-pages-60-78
Tích phân-5-Ứng dụng tích phân tính diện tích hình phẳng-pages-60-78lovestem
 
Chuyen de toan logic roi rac li thuyet to hop
Chuyen de toan logic  roi rac li thuyet to hopChuyen de toan logic  roi rac li thuyet to hop
Chuyen de toan logic roi rac li thuyet to hoplephucduc06011999
 

Was ist angesagt? (20)

Câu hỏi trắc nghiệm hóa vô cơ y
Câu hỏi trắc nghiệm hóa vô cơ yCâu hỏi trắc nghiệm hóa vô cơ y
Câu hỏi trắc nghiệm hóa vô cơ y
 
Đề thi Access mới nhất 2014 - Part 2
Đề thi Access mới nhất 2014 - Part 2Đề thi Access mới nhất 2014 - Part 2
Đề thi Access mới nhất 2014 - Part 2
 
đáP án 24 đề tin
đáP án 24 đề tinđáP án 24 đề tin
đáP án 24 đề tin
 
Giáo án 4
Giáo án 4Giáo án 4
Giáo án 4
 
Nong do dung dich nuoc hoa vo co pche330
Nong do dung dich nuoc hoa vo co pche330Nong do dung dich nuoc hoa vo co pche330
Nong do dung dich nuoc hoa vo co pche330
 
Sự lai hóa orbital
Sự lai hóa orbitalSự lai hóa orbital
Sự lai hóa orbital
 
Bom
BomBom
Bom
 
Khái niệm thông tin và dữ liệu
Khái niệm thông tin và dữ liệuKhái niệm thông tin và dữ liệu
Khái niệm thông tin và dữ liệu
 
[SPSS] Syntax BTTH2 - Thống kê mô tả & Ước lượng thống kê
[SPSS] Syntax BTTH2 - Thống kê mô tả & Ước lượng thống kê [SPSS] Syntax BTTH2 - Thống kê mô tả & Ước lượng thống kê
[SPSS] Syntax BTTH2 - Thống kê mô tả & Ước lượng thống kê
 
Tai lieu on_thi_hsg
Tai lieu on_thi_hsgTai lieu on_thi_hsg
Tai lieu on_thi_hsg
 
Code và sơ đồ khối môn Phương pháp số và lập trình Fortran
Code và sơ đồ khối môn Phương pháp số và lập trình FortranCode và sơ đồ khối môn Phương pháp số và lập trình Fortran
Code và sơ đồ khối môn Phương pháp số và lập trình Fortran
 
Phenol
PhenolPhenol
Phenol
 
Aren 07
Aren 07Aren 07
Aren 07
 
Hợp chất dị vòng
Hợp chất dị vòngHợp chất dị vòng
Hợp chất dị vòng
 
Slide bài giảng tổng hợp xác suất thống kê
Slide bài giảng tổng hợp xác suất thống kêSlide bài giảng tổng hợp xác suất thống kê
Slide bài giảng tổng hợp xác suất thống kê
 
Công thức lượng giác cần nhớ
Công thức lượng giác cần nhớCông thức lượng giác cần nhớ
Công thức lượng giác cần nhớ
 
Chuong 9 he voi moi truong ran long khi hoa keo
Chuong 9 he voi moi truong ran long khi  hoa keoChuong 9 he voi moi truong ran long khi  hoa keo
Chuong 9 he voi moi truong ran long khi hoa keo
 
Tích phân-5-Ứng dụng tích phân tính diện tích hình phẳng-pages-60-78
Tích phân-5-Ứng dụng tích phân tính diện tích hình phẳng-pages-60-78Tích phân-5-Ứng dụng tích phân tính diện tích hình phẳng-pages-60-78
Tích phân-5-Ứng dụng tích phân tính diện tích hình phẳng-pages-60-78
 
Can bang hoa hoc
Can bang hoa hocCan bang hoa hoc
Can bang hoa hoc
 
Chuyen de toan logic roi rac li thuyet to hop
Chuyen de toan logic  roi rac li thuyet to hopChuyen de toan logic  roi rac li thuyet to hop
Chuyen de toan logic roi rac li thuyet to hop
 

Andere mochten auch

Ky thuat lap trinh c++
Ky thuat lap trinh c++Ky thuat lap trinh c++
Ky thuat lap trinh c++ptquang160492
 
Tu hoc javascript
Tu hoc javascriptTu hoc javascript
Tu hoc javascriptzingoncmu2
 
Phần 8: Mảng hai chiều
Phần 8: Mảng hai chiềuPhần 8: Mảng hai chiều
Phần 8: Mảng hai chiềuHuy Rùa
 
nhập xuất file 2 c++
nhập xuất file 2 c++nhập xuất file 2 c++
nhập xuất file 2 c++ptquang160492
 
Baitap pascal cơ bản
Baitap pascal cơ bảnBaitap pascal cơ bản
Baitap pascal cơ bảnTường Anh
 
Phần 11: Tập tin
Phần 11: Tập tinPhần 11: Tập tin
Phần 11: Tập tinHuy Rùa
 
Phần 7: Mảng một chiều
Phần 7: Mảng một chiềuPhần 7: Mảng một chiều
Phần 7: Mảng một chiềuHuy Rùa
 
Bai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocBai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocHồ Lợi
 
Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1Minh Ngoc Tran
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trìnhHuy Rùa
 

Andere mochten auch (12)

Ky thuat lap trinh c++
Ky thuat lap trinh c++Ky thuat lap trinh c++
Ky thuat lap trinh c++
 
Baitap ktlt
Baitap ktltBaitap ktlt
Baitap ktlt
 
Tu hoc javascript
Tu hoc javascriptTu hoc javascript
Tu hoc javascript
 
Phần 8: Mảng hai chiều
Phần 8: Mảng hai chiềuPhần 8: Mảng hai chiều
Phần 8: Mảng hai chiều
 
Mảng 2 chiều
Mảng 2 chiềuMảng 2 chiều
Mảng 2 chiều
 
nhập xuất file 2 c++
nhập xuất file 2 c++nhập xuất file 2 c++
nhập xuất file 2 c++
 
Baitap pascal cơ bản
Baitap pascal cơ bảnBaitap pascal cơ bản
Baitap pascal cơ bản
 
Phần 11: Tập tin
Phần 11: Tập tinPhần 11: Tập tin
Phần 11: Tập tin
 
Phần 7: Mảng một chiều
Phần 7: Mảng một chiềuPhần 7: Mảng một chiều
Phần 7: Mảng một chiều
 
Bai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hocBai tap thuc hanh nhap mon tin hoc
Bai tap thuc hanh nhap mon tin hoc
 
Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1Lap trinh c++ có lời giải 1
Lap trinh c++ có lời giải 1
 
Bài tập nhập môn lập trình
Bài tập nhập môn lập trìnhBài tập nhập môn lập trình
Bài tập nhập môn lập trình
 

Mehr von Nguyen Van Hung

Cai dat va_cau_hinh_iptables
Cai dat va_cau_hinh_iptablesCai dat va_cau_hinh_iptables
Cai dat va_cau_hinh_iptablesNguyen Van Hung
 
So sánh asp.net và mvc
So sánh asp.net và mvcSo sánh asp.net và mvc
So sánh asp.net và mvcNguyen Van Hung
 
Cong thuc sinh hoc 12 day du nhat
Cong thuc sinh hoc 12 day du nhatCong thuc sinh hoc 12 day du nhat
Cong thuc sinh hoc 12 day du nhatNguyen Van Hung
 
Cong thuc sinh hoc 12 day du nhat
Cong thuc sinh hoc 12 day du nhatCong thuc sinh hoc 12 day du nhat
Cong thuc sinh hoc 12 day du nhatNguyen Van Hung
 
Asp net mvc3 music store egroups vn
Asp net mvc3 music store   egroups vnAsp net mvc3 music store   egroups vn
Asp net mvc3 music store egroups vnNguyen Van Hung
 
Asp.net mvc 3 (c#) (9 tutorials) egroups vn
Asp.net mvc 3 (c#) (9 tutorials)   egroups vnAsp.net mvc 3 (c#) (9 tutorials)   egroups vn
Asp.net mvc 3 (c#) (9 tutorials) egroups vnNguyen Van Hung
 
Cau truc dl_va_giai_thuat_bai1[1] - copy
Cau truc dl_va_giai_thuat_bai1[1] - copyCau truc dl_va_giai_thuat_bai1[1] - copy
Cau truc dl_va_giai_thuat_bai1[1] - copyNguyen Van Hung
 
Thạch quyển và các dạng địa hình
Thạch quyển và các dạng địa hìnhThạch quyển và các dạng địa hình
Thạch quyển và các dạng địa hìnhNguyen Van Hung
 
Bài tập về chuẩn hóa chuỗ1
Bài tập về chuẩn hóa chuỗ1Bài tập về chuẩn hóa chuỗ1
Bài tập về chuẩn hóa chuỗ1Nguyen Van Hung
 
De cuong tu tuong hcm khoa iv
De cuong tu tuong hcm  khoa ivDe cuong tu tuong hcm  khoa iv
De cuong tu tuong hcm khoa ivNguyen Van Hung
 

Mehr von Nguyen Van Hung (18)

Su dung linux shell
Su dung linux shellSu dung linux shell
Su dung linux shell
 
Cai dat va_cau_hinh_iptables
Cai dat va_cau_hinh_iptablesCai dat va_cau_hinh_iptables
Cai dat va_cau_hinh_iptables
 
Git slides
Git slidesGit slides
Git slides
 
390a gitintro 12au
390a gitintro 12au390a gitintro 12au
390a gitintro 12au
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to git
 
So sánh asp.net và mvc
So sánh asp.net và mvcSo sánh asp.net và mvc
So sánh asp.net và mvc
 
Cong thuc sinh hoc 12 day du nhat
Cong thuc sinh hoc 12 day du nhatCong thuc sinh hoc 12 day du nhat
Cong thuc sinh hoc 12 day du nhat
 
Cong thuc sinh hoc 12 day du nhat
Cong thuc sinh hoc 12 day du nhatCong thuc sinh hoc 12 day du nhat
Cong thuc sinh hoc 12 day du nhat
 
Asp net mvc3 music store egroups vn
Asp net mvc3 music store   egroups vnAsp net mvc3 music store   egroups vn
Asp net mvc3 music store egroups vn
 
Asp.net mvc 3 (c#) (9 tutorials) egroups vn
Asp.net mvc 3 (c#) (9 tutorials)   egroups vnAsp.net mvc 3 (c#) (9 tutorials)   egroups vn
Asp.net mvc 3 (c#) (9 tutorials) egroups vn
 
Northwind products
Northwind productsNorthwind products
Northwind products
 
Cau truc dl_va_giai_thuat_bai1[1] - copy
Cau truc dl_va_giai_thuat_bai1[1] - copyCau truc dl_va_giai_thuat_bai1[1] - copy
Cau truc dl_va_giai_thuat_bai1[1] - copy
 
Bao cao
Bao caoBao cao
Bao cao
 
Thạch quyển và các dạng địa hình
Thạch quyển và các dạng địa hìnhThạch quyển và các dạng địa hình
Thạch quyển và các dạng địa hình
 
Bài tập về chuẩn hóa chuỗ1
Bài tập về chuẩn hóa chuỗ1Bài tập về chuẩn hóa chuỗ1
Bài tập về chuẩn hóa chuỗ1
 
Doi xung mang mot chieu
Doi xung mang mot chieuDoi xung mang mot chieu
Doi xung mang mot chieu
 
Gtrinh oop[1]
Gtrinh oop[1]Gtrinh oop[1]
Gtrinh oop[1]
 
De cuong tu tuong hcm khoa iv
De cuong tu tuong hcm  khoa ivDe cuong tu tuong hcm  khoa iv
De cuong tu tuong hcm khoa iv
 

Khoahoctunhien.net mang1chieu

  • 1. 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 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 LietKeGiaTri 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); } }
  • 2. 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 duong dau(float a[], int n) { for (i nt 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(i nt a[] , int n) { for(int i=0; i<n; i ++) { if(a[i ]% 2==0) { return i; }
  • 3. } 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 (i nt 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) { fl oat min; int dem= 0; for (i nt 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, i nt n) { int min; int dem =0 ; for (i nt i =0; i<n; i++) { if(A[i ]>0) { dem++; min = i;
  • 4. break; } } if (dem == 0) return -1; for (i =i+1; i<n; i++) { if((A[i]>0)&&(A[mi n]>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) { fl oat min = a[0]; for (i nt 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; }
  • 5. 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 (i nt i =1 ; i <n; i++) if(n% i==0) tong = tong + i; if (tong == n) return 1; return 0; } int hoanthiendau(int a[],i nt 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(fl oat a[], int n) { for (i nt 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 DuongCuoi Cung(fl oat a[], int n) { for (i nt 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 .
  • 6. 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(fl oat a[], int n) { fl oat max; int dem =0; for (i nt 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 nguyentol onnhat(i nt 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 ;
  • 7. } } } 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; }
  • 8. 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<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 . 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 co gia tri gan % .2f nhat l a :",x); for(j;j<n;j++) { if((fabs)(A[j] - x) == kcgn)
  • 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 chua cac gia tri trong mangn", 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)); } 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(fl oat *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(fl oat *A , i nt 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 dautientrong doan(int a[], i nt n, i nt 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]
  • 10. [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 (i nt i =1; i<a; i++) { if (i*i == a) { return 1; } } return 0; } int chinhphuong dautien(int *A, int n) { for (i nt 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)
  • 11. { for (i nt 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; }
  • 12. 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; } }
  • 13. 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 (i nt 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 (i nt i =2; i<a; i++) { if (a% i==0) return 0; } return 1; } int bai170(int a[], int n) { int max = l onnhat(A, n); for (i nt i = max + 1; i>max; i++) {
  • 14. 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[], i nt n) { int min = a[0]; for (i nt i =1; i<n; i++) min = (min < a[i])? min: a[i]; return min; } voi d uocsocuami n(int a[], int n, int b[], int &m , int min) { m = 0; for (i nt i =1; i<=min; i++) { if (min % i == 0 ) { b[m]=i; m++; } } } int uocsocuamang(int a[], int b[], int n, int m) { for (i nt 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 (i nt i =1; i<n; i++) { if ((max == 0 )||(A[i]==0)) { printf("Ban da vi pham l oi the doi voi bai nayn"); exit (0); } max=max>A[i]? max:A[i]; } return max; } int boichungcuamang (int A[], int n, int max) { int boiso = max ; for (i nt i =0; i<n; i++) { if (boiso % A[i] != 0) { boiso = boiso + max; i=-1 ; } } return boiso;
  • 15. } 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 . voi d 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. voi d 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); } } } }
  • 16. 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<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 . voi d LietKetTrongDoanXY(fl oat a[], int n, float x, fl oat y) { for (i nt 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] . voi d LietKetChanTrong DoanXY(int a[], int n, int x, int y) { for (i nt 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ó . voi d LietKe(int a[], int n) { int flag = 0; for (i nt i =0; i<n; i++) { if (a[i]>abs(a[i-1 ])) { fl ag =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
  • 17. 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<n; i++) { s = s + A[i]; } return 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<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 tong daule(int A[], i nt n) { int s=0; for (i nt i =0; i<n; i++) { if (daule(A[i])==1) { s = s + A[i]; } } return s;
  • 18. } 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 (i nt 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[], i nt n) { int s = 0 ; for (i nt 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[], i nt n) { int s=0; for (i nt 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[], i nt n) { int s=0; for (i nt i =0; i<n; i++) { if (i==0 && A[i]>A[i+1]) {
  • 19. 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 (i nt 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 (i nt 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;
  • 20. tam = tam/10; } if (sodaonguoc == n) { return 1; } return 0; } int tong(int A[], int n) { int s=0; for (i nt 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 (i nt 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; fl oat dem=0; for (i nt i = 0; i <n; i++) { if (songuyento(A[i])==1 ) { s=s+A[i ];
  • 21. 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; fl oat dem=0; for (i nt 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; fl oat dem=0; for (i nt 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 TB NhanDuong(i nt A[], int n, int m) { int T=1; fl oat dem=0; for (i nt i = 0; i <n; i++) { if (A[i]>0 ) { T*=A[i]; dem ++; } }
  • 22. 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 (i nt 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 (i nt 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 (i nt 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)
  • 23. { return 1; } return 0; } int dem (int a[], int n) { int dem = 0; for (i nt 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 (i nt 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 (i nt 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 (i nt i =0; i<n; i++) { if (a[i]% 2 == 0) { demchan++; } } if (demchan > n - demchan) {
  • 24. 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(i nt a) { if (a<=1 ) { return 0; } for (i nt 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 ;
  • 25. for (i nt 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++) {
  • 26. 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) voi d lietke(int *a, int n) { for (i nt 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++; } }
  • 27. } if (dem!=0 ) { printf("Gi a tri % d co tan suat xuat hien la % dn", a[i ], dem ); } } } 231/ Hãy liệt kê các giá trị xuất hiện đúng 1 lần trong mảng voi d lietke(int a[], int n) { int c[100]; int dem[100]; int vitri = 0; for (i nt 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("Gi a tri chi xuat hien dung 1 l annt"); for (i nt k=0 ; k<vi tri; 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) voi d lietke(int a[], int n) { int c[100]; int dem[100]; int vitri = 0; for (i nt 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++; } }
  • 28. } if (demtam!=0 ) { c[vi tri] = a[i ]; dem[vitri ] = demtam; vi tri++; } } printf("Gi a tri chi xuat hien dung 1 l annt"); for (i nt k=0 ; k<vi tri; 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 voi d lietke(int *a, int n) { for (i nt 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("Gi a tri % d co tan suat xuat hien la % dn", 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[],i nt 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++) {
  • 29. 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 voi d 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 Bn",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 An",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[],i nt 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
  • 30. int MotGi aTriXuatHienNhieuNhat(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]) { fl ag[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 voi d LietKe(int a[],int n) { int flag [100]={0},i,j,Dem1; //Tien hanh gan mảng fl ag == 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]) { fl ag[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 == fl ag[i]) { printf(" % d ",a[i]); } } } 239/ Hãy đếm số lượng số nguyên tố phân biệt trong mảng
  • 31. int SoNguyenTo(i nt 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 ) { fl ag = 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) { fl ag = 1 ; break; } } return flag;
  • 32. } 242/ Ktra mảng có số chẵn ko? Có trả về 1, ko có trả về 0 . int kiemtrachan(int A[] , i nt n) { int flag = 0; for(int i=0 ; i<n ;i++) { if(A[i ]% 2 == 0) { fl ag = 1 ; break; } } return flag; } 243/ Ktra mảng có số ng tố ko? Có trả về 1, ko có trả về 0 . int SoNguyenTo(i nt a) { if (a<=1 ) { return 0; } for (i nt 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) { fl ag = 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 (i nt 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) { fl ag = 1 ; break; }
  • 33. } 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) { fl ag = 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]) { fl ag = 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) { fl ag = 0 ; break; } } return flag; } 248/ Ktra mảng có tăng dần hay ko? int kttang dan(int A[] , int n) { int flag = 1; for(int i=0 ; i<n-1 ;i++) { if(A[i ] > A[i+1]) { fl ag = 0 ; break; } } return flag; } 249/ Ktra mảng có giảm dần hay ko? int ktgiam(int A[] , i nt n) {
  • 34. int flag = 1; for(int i=0 ; i<n-1 ;i++) { if(A[i ] < A[i+1]) { fl ag = 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(i nt 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) { fl ag = 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[] , i nt 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]) { fl ag = 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[] , i nt 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 ])) { fl ag = 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 ++)
  • 35. { for(int j = 0 ; j < m ;j++) { if(A[i ] == B [j]) { dem++; } } } if(dem == n) { fl ag = 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]) { fl ag = 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 voi d sapxep(int a[],int n) { for (i nt 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 voi d sapxep(int a[],int n) { for (i nt i =0;i<n;i++) { for (int j=i +1;j<n;j++) { if (a[i]<a[j]) {
  • 36. 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í voi d sapxep(int a[],int n) { for (i nt 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(i nt a) { if (a<=1 ) { return 0; } for (i nt i =2; i<a; i++) { if (a% i==0) { return 0; } } return 1; } voi d sapxep(int a[],int n) { for (i nt 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 ;
  • 37. for (i nt i =1 ; i <n; i++) if(n% i==0) tong = tong + i; if (tong == n) return 1; return 0; } voi d sapxep(int a[],int n) { for (i nt 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? voi d sapxep(int a[],int n) { for (i nt 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; } } } } voi d KetQua(int a[],int b[],i nt na,int nb) { if (na != nb) { printf("ko phai!"); return ; } sapxep(a,na); sapxep(b,nb); for (i nt 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í voi d sapxep(int a[],int n) { for (i nt i =0;i<n;i++) {
  • 38. 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 voi d sapxep(int a[],int n) { for (i nt 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 voi d sapxep(int a[],int n) { for (i nt 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 voi d sapxep(int a[],int n) { for (i nt 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;
  • 39. } } } } voi d 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 (i nt 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 voi d sapxep(int a[],int n) { for (i nt 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; } } } } voi d 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 (i nt i =0;i<nc;i++) { if (vta >= 0 && vtb >= 0) { if (a[vta] > b[vtb]) { c[i] = a[vta]; vta--;
  • 40. } 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 . voi d themgiatri(int a[], i nt &n, i nt 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 . voi d nhapmang(int a[], int &n) { printf("Nhap mang 1 chieun"); printf("Nhap n : "); scanf("% d",&n); while (n<=1 ) { printf("Nhap l ai 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 . voi d ChenXMang Tang(int a[], int &n, int x)
  • 41. { 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 voi d nhapmang(int a[], int &n) { printf("Nhap mang 1 chieun"); printf("Nhap n : "); scanf("% d",&n); while (n<=1 ) { printf("Nhap l ai 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 voi d Xoavitri(int a[], i nt &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 voi d xoavitri(float a[], int &n, int k) { for (i nt i =k; i<n; i ++) {
  • 42. a[i] = a[i +1]; } n--; } float lonnhat(float a[], int n) { fl oat max = a[0]; for (i nt i =1; i<n ; i++) { max=(max<a[i ])?a[i]:max; } return max; } voi d xoamang(fl oat a[], int &n) { fl oat max = lonnhat(a,n); for (i nt i =0; i<n; i++) { if (a[i]==max) { xoavi tri(a,n,i ); i--; } } } 273/ Xóa tất cả số âm trong mảng . voi d xoavitri(float a[], int &n, int k) { for (i nt i =k; i<n; i ++) { a[i] = a[i +1]; } n--; } voi d xoamang(fl oat a[], int &n) { for (i nt i =0; i<n; i++) { if (a[i]<0 ) { xoavi tri(a,n,i ); i--; } } } 274/ Xóa tất cả số chẵn trong mảng . voi d xoavitri(float a[], int &n, int k) { for (i nt i =k; i<n; i ++) { a[i] = a[i +1]; } n--; } voi d xoamang(fl oat a[], int &n) { for (i nt i =0; i<n; i++) { if (a[i]% 2==0) { xoavi tri(a,n,i ); i--; } } }
  • 43. 275/ Xóa tất cả số chính phương trong mảng . voi d xoavitri(int a[], i nt &n, int k) { for (i nt 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; } voi d xoamang(int a[], int &n) { for (i nt i =0; i<n; i++) { if (sochinhphuong(a[i])==1) { xoavi tri(a,n,i ); i--; } } } 276/ Xóa tất cả các ptử trùng với x . voi d xoavi tri(fl oat a[], int &n, float k) { for (int i=k; i <n; i++) { a[i ] = a[i+1]; } n--; } voi d xoamang(float a[], int &n, fl oat x) { for (int i=0; i <n; i++) { if (a[i] ==x) { xoavi tri(a,n,i ); i--; } } } 277/ Xóa tất cả số nguyên tố trong mảng . voi d xoavi tri(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; }
  • 44. return 1 ; } voi d 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ử . voi d xoavitri(int a[], i nt &n, int k) { for (i nt i =k; i<n; i ++) { a[i] = a[i +1]; } n--; } voi d xoamang(int a[], int &n) { for (i nt i =0; i<n-1; i++) { for(int j=i+1 ; j<n;j++) { if (a[i]==a[j]) { xoavi tri(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 . voi d xoavitri(int a[], i nt &n, int k) { for (int i=k; i <n; i++) { a[i] = a[i+1]; } n--; } voi d 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]) { xoavi tri(a,n,j); j--; test=1; } } if (test == 1) { xoavi tri(a,n,i); //Xóa luôn chính nó
  • 45. } } } Kĩ thuật xử lý mảng 280/ Hãy đưa số 1 về đầu mảng . voi d DoiCho(int a[], int n, int k) { for(int i = k ; i>0; i--) { a[i] = a[i -1]; } a[0] = 1; } voi d duaMotvedau(int a[], int n) { for (i nt 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 . voi d duachanvedau(int a[], int k) { int tam = a[k]; for(int i = k ; i>0; i--) { a[i] = a[i -1]; } a[0] = tam; } voi d 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; } voi d 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 ) {
  • 46. dua0(a,i,vitrichancuoi); // vi tri i } } } 282/ Đưa các số chia hết cho 3 về đầu mảng . voi d 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; } voi d chiahetchoba(int a[], int n) { for (i nt 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 . voi d hoanvi(i nt &a, int &b) { int tam = a; a = b; b =tam; } voi d DaoMang(int a[], int n) { for (i nt 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 . voi d hoanvi(i nt &a, int &b) { int tam = a; a = b; b =tam; } voi d daochan(int a[], int n) { for (i nt 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 . voi d hoanvi(i nt &a, int &b) { int tam = a; a = b;
  • 47. b =tam; } voi d daoduong(int a[], i nt n) { for (i nt 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 . voi d dichtrai(int a[], int n) { int tam = a[0]; for (i nt 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 voi d dichphai (int a[], int n) { int tam = a[n-1]; for (i nt 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 . voi d color (int a) { HANDLE mau; mau = GetStdHandle(STD_OUTPUT_ HANDLE); SetConsoleTextAttri bute(mau,a); } voi d XuatChanVang LeTrang(int a[], int n) { for (i nt i =0; i<n; i++) { if (a[i]% 2==0) { col or(14); printf("% 4d",a[i]); } else { col or(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 . voi d chanlehaihang(int a[], int n) { for (i nt i =0; i<n; i++)
  • 48. { if (a[i]% 2==0) { printf("% 4d",a[i]); } } printf("nt"); 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 . voi d hoanvi(i nt &a, int &b) { int tam = a; a = b; b =tam; } voi d 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 . voi d mi nmax(int a[], int n, int &max, int &min) { max=a[0]; min=a[0]; for (i nt i =1; i<n; i++) { max=(max<a[i ])?a[i]:max; min=(min>a[i])?a[i]:min; } } voi d 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 . voi d thaysogannhat(fl oat &n) {
  • 49. int phannguyen = (int) (n) ; fl oat phanle = n - phannguyen; if (phanle <=0.5) { n = (fl oat)phannguyen; } else { n = (fl oat)phannguyen + 1; } } voi d biendoi(float a[], int n) { for (i nt 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 . voi d lietkecon(int a[], int n) { int ChieuDai; for (i nt 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ử . voi d lietkecon(int a[], int n) { int ChieuDai; for (i nt 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[], i nt nb) { for(int i=0; i<nb-1 ; i++) { if (b[i ]>b[i+1 ]) return 0; } return 1; } voi d xuatmangcon(int b[], int nb)
  • 50. { for(int i=0; i<nb; i++) { printf("% 4d", b[i]); } printf("n"); } voi d lietkecontang(int a[], int n) { int ChieuDai; int b[100], nb; for (i nt 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 (i nt i =1; i<n; i++) { max = max<a[i]?a[i]:max; } return max; } int ktramangtang (int b[], i nt nb) { for(int i=0; i<nb-1 ; i++) { if (b[i ]>b[i+1 ]) return 0; } return 1; } voi d xuatmangcon(int b[], int nb) { for(int i=0; i<nb; i++) { printf("% 4d", b[i]); } printf("n"); } int ktracomax(int b[], i nt nb,i nt max) { for (i nt i =0; i<nb;i++) { if (b[i ]==max) { return 1; } } return 0; } voi d lietkecontang(int a[], int n, int max)
  • 51. { int ChieuDai; int b[100], nb; for (i nt 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[], i nt nb) { for(int i=0; i<nb-1 ; i++) { if (b[i ]>b[i+1 ]) return 0; } return 1; } voi d xuatmangcon(int b[], int nb) { for(int i=0; i<nb; i++) { printf(" % d ", b[i]); } } intt tongmangcon(int b[], i nt nb) { intt s=0; for (i nt i =0; i<nb; i++) { s = s + b[i]; } return s; } voi d lietkecontang(int a[], int n) { int chieudaicon, b[100], nb, tong ; for (i nt 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 = tong mangcon(b,nb); printf("tTong mang nay: % .2fn", tong); }
  • 52. } } } 298/ Đếm mảng con tăng có độ dài lớn hơn 1 . int ktramangtang (int b[], i nt nb) { for(int i=0; i<nb-1 ; i++) { if (b[i ]>b[i+1 ]) return 0; } return 1; } voi d Demcontang(int a[], int n) { int chieudaicon, b[100], nb; int dem=0; for (i nt 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 ti m: % dn", dem); } 299/ Liệt kê dãy con toàn dương và độ dài lớn hơn 1 . int ktramang duong(fl oat b[], int nb) { for(int i=0; i<nb; i++) if (b[i ]<0) return 0; return 1; } voi d xuatmangcon(fl oat b[], int nb) { for(int i=0; i<nb; i++) printf(" % .2f ", b[i]); printf("n"); } voi d lietkecontang(float a[], int n) { int chieudaicon; fl oat b[100]; int nb; for (i nt 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 (ktramang duong(b,nb)==1) xuatmangcon(b,nb); }
  • 53. } } 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; } voi d Demcongiam(fl oat a[], int n) { int chieudaicon; fl oat b[100]; int nb; int dem=0; for (i nt 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 ti m: % dn", dem); } 301/ Cho biết mảng a có phải là mảng con trong mảng b ko? int Ktra(i nt a[], int b[], i nt 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;
  • 54. 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 . voi d DayConToanDuongDaiNhat(int a[], i nt 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 . voi d Tong MangConB ang M(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]); }
  • 55. } } } 305 * Tìm dãy con toàn dương có tổng lớn nhất . voi d DayConToanDuong TongLonNhat(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 . voi d DayConTong LonNhat(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 l on 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 . voi d TaoMangB(i nt a[], int n) {
  • 56. int b[100], nb=0; for (i nt 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 . voi d TaoMangB(i nt a[], int n) { int b[100], nb=0; for (i nt 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 . voi d TaoMangB(i nt a[], int n) { int b[100], nb=0; for (i nt 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(i nt a) { if (a<=1 ) return 0; for (i nt i =2; i<a; i++) if (a% i==0) return 0; return 1; } voi d TaoMangB(i nt a[], int n) { int b[100], nb=0; for (i nt i =0; i<n;i ++) { if (SoNguyenTo(a[i])==1) { b[nb] = a[i]; nb++; } } xuatmang(b,nb); }