Một số bài tập cơ bản về mảng một chiều

1. Viết hàm nhập mảng một chiều các số nguyên

Phải luôn luôn định trước số phần tử cần dùng cho mảng. Trong C/C++, mảng được đánh chỉ số từ 0.
Nếu là mảng các số thực chỉ việc thay int a[] thành float a[] và đổi mã đặc tả của hàm scanf trong vòng lặp thành %f.
Code C:

//Cách 1: Nhập n trong hàm nhập mảng
void InputArray1(int a[], int &n)
{
   printf("Nhập số phần tử: ");
   scanf("%d", &n);
   for(int i = 0; i < n; i++);
   {
      printf("A[%d] = ", i);
      scanf("%d", &a[i]);
   }
}

//Cách 2: Nhập n ngoài hàm nhập mảng
void InputArray2(int a[], int n)
{
   for(int i = 0; i < n; i++)
   {
      printf("A[%d] = ", i);
      scanf("%d", &a[i]);
   }
}

2. Viết hàm xuất mảng một chiều các số nguyên

Code C:

void OutputArray(int a[], int n)
{
   for(int i = 0; i < n; i++)
      printf("%d\t", a[i]);
}

3. Viết hàm tìm giá trị lớn nhất trong mảng nguyên một chiều

Code C:

int MaxOfArray(int a[], int n)
{
   int max = a[0];
   for(int i = 1; i < n; i++)
      if(a[i]>max)
         max = a[i];
   return max;
}

4. Viết hàm tìm chỉ số của phần tử có giá trị lớn nhất trong mảng nguyên một chiều

Code C:

int IndexOfMaxOfArray(int a[], int n)
{
   int index = 0;
   for(int i = 0; i < n; i++)
      if(a[i]>a[index])
         index = i;
   return index;
}

5. Viết hàm tìm giá trị trung bình của các phần tử chẵn trong mảng nguyên một chiều

Dùng một biến lưu tổng giá trị các phần tử chẵn và một biến đếm các phần tử chẵn, giá trị trung bình sẽ bằng tổng chia cho biến đếm.
Code C:

float AverageOfEvenOfArray(int a[], int n)
{
   float sum = 0;
   int dem = 0;
   for(int i = 0; i < n; i++)
      if(a[i]%2==0)
      {
         sum += a[i];
         dem++;
      }
   return sum / dem;
}

6. Viết hàm tìm số nguyên tố lớn nhất trong mảng nguyên một chiều


Trả về số nguyên tố lớn nhất nếu tìm được, trả về -1 nếu không tìm được.
Code C:

int MaxPrimeOfArray(int a[], int n)
{
   int max = -1;
   for(int i = 0; i < n; i++)
      if(IsPrime(a[i]) && a[i]>max)
         max = a[i];
   return max;
}

7. Viết hàm kiểm tra một mảng có là mảng đối xứng

Ví dụ: a[] = {1, 2, 3, 2, 1,}, b[] = {1, 4, 4, 1} là mảng đối xứng, c[] = {1, 2, 3, 3, 1} không là mảng đối xứng.
Trả về 1 nếu là mảng đối xứng, trả về 0 nếu không là mảng đối xứng.
Code C:

//Cách 1
int DoiXung(int a[], int n)
{
   for(int i = 0; i < n; i++)
      if(a[i] != a[n-1-i])
         return 0;
   return 1;
}

//Cách 2
int DoiXung(int a[], int n)
{
   for(int i = 0, j = n-1; i < j; i++, j--)
      if(a[i]!=a[j])
         return 0;
   return 1;
}

8. Viết hàm xoá một phần tử trong mảng nguyên một chiều

Code C:

void XoaPhanTu(int a[], int &n, int index)
{
   for(int i = index; i < n-1; i++)
      a[i] = a[i+1];
   n--;
}

9. Viết hàm xoá các phần tử giống nhau trong mảng sao cho mỗi phần tử trong mảng đều có giá trị khác nhau

Code C:

void XoaGiongNhau(int a[], int &n)
{
   for(int i = 0; i < n-1; i++)
      for(int j = i+1; j < n; )
      {
         if (a[i] == a[j])
            XoaPhanTu(a, n, j);
         else
            j++; //Xoá triệt để các số liền nhau rồi mới tăng j
      }
}

Hầu hết những bài tập dưới đây là rất cơ bản dành cho các bạn mới học Nhập môn lập trình tham khảo.Phải luôn luôn định trước số phần tử cần dùng cho mảng. Trong C/C++, mảng được đánh chỉ số từ 0.Nếu là mảng các số thực chỉ việc thaythànhvà đổi mã đặc tả của hàmtrong vòng lặp thànhCode C:Code C:Code C:Code C:Dùng một biến lưu tổng giá trị các phần tử chẵn và một biến đếm các phần tử chẵn, giá trị trung bình sẽ bằng tổng chia cho biến đếm.Code C:Trả về số nguyên tố lớn nhất nếu tìm được, trả về -1 nếu không tìm được.Code C:Ví dụ:là mảng đối xứng,không là mảng đối xứng.Trả về 1 nếu là mảng đối xứng, trả về 0 nếu không là mảng đối xứng.Code C:Code C:Code C: