Thứ Hai, 4 tháng 6, 2018

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

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

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.
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 scanftrong vòng lặp thành %f.
Code C:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//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:
?
1
2
3
4
5
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:
?
1
2
3
4
5
6
7
8
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:
?
1
2
3
4
5
6
7
8
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:
?
1
2
3
4
5
6
7
8
9
10
11
12
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:
?
1
2
3
4
5
6
7
8
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:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//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:
?
1
2
3
4
5
6
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
}
}
Bạn muốn học lập trình hãy liên hệ ngay với Mỹ Vân để được nhận ưu đãi từ học viện nhé
Học lập trình tại Đà Nẵng
Học lập trình tại Đà Nẵng 0935029202
Số tài khoản : 56110000942174 BIDV Chi nhánh Đà Nẵng
HUYNH THI MY VAN

Không có nhận xét nào:

Đăng nhận xét