Pages

Mảng - Array

0

cplusplus imageMảng là một trong những phần cơ bản và cốt lỏi của nhiều ngôn ngữ lập trình trong đó có C. Nhiệm vụ chính của mảng là để lưu nhiều phần tử có cùng kiểu dữ liệu. Mỗi phần tử của mảng có một số thứ tự được gọi là chỉ số dùng để xác định vị trí của nó trong mảng. Mảng bao gồm mảng 1 chiều và mảng nhiều chiều

1. Mảng 1 chiều

Khai báo

KDL TênMảng[SốPhầnTử]; //Không khởi gán KDL TênMảng[SốPhầnTử] = {Dãy Giá Tri}; //Có khởi gán KDL TênMảng[] = {Dãy Giá Tri}; //Có khởi gán

Truy xuất phần tử của mảng : TênMảng[Chỉ Số]

Ví dụ : int a[10]; array image

Lưu ý

  • Tên mảng : là con trỏ lưu địa chỉ của phần tử đầu tiên
  • Chỉ số của mảng được đánh số từ 0
  • Mảng 1 chiều đôi khi được gọi là dãy

Một số ví dụ cơ bản về mảng 1 chiều

  • Nhập mảng
    void NhapMang(int a[],int &n)
    {
      printf("Nhap so phan tu: ");
      scanf("%d",&n);
      int i;
      for (i = 0; i < n; i++)
      {
        printf("a[%d] = ",i);
        scanf("%d",&a[i]);
      }
    }
    
  • Xuất mảng
    void XuatMang(int a[], int n)
    {
      for (int i = 0; i < n; i++)
      {
        printf("%d ",a[i]);
      }
    }
    
  • Sắp xếp tăng dần
    void SapXep(int a[], int n)
    {
      for (int i = 0; i < n - 1; i++)
        for (int j = i; j < n; i++)       if (a[i] > a[j])
          {
            int t = a[i];
            a[i] = a[j];
            a[j] = t;
          }
    }
    

2. Mảng 2 chiều

Khai báo : KDL TênMảng[SốDòng][SốCột];

Truy xuất phần tử trong mảng : TênMảng[ChỉSốDòng][ChỉSốCột]

* Với các mảng 2 chiều có KDL dạng số thường được gọi là ma trận *

Ví dụ : int a[5][5]; array 2 image

Một số ví dụ cơ bản về mảng 2 chiều

  • Nhập mảng 2 chiều
    void NhapMT(int a[MAX][MAX], int &m, int &n)
    {
      printf("Nhap so dong: ");
      scanf("%d",&m);
      printf("Nhap so cot: ");
      scanf("%d",&n);
      for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j ++)
        {
          printf("a[%d][%d] = ",i,j);
          scanf("%d",&a[i][j]);
        }
    }
    
  • Xuất mảng 2 chiều
    void XuatMT(int a[MAX][MAX], int m, int n)
    {
      for (int i = 0; i < m; i++)
      {
        for (int j = 0; j < n; j ++)
          printf("%3d",a[i][j]);
        printf("\n");
      }
    }
    
  • Sắp xếp tăng dần từ trên xuống dưới, từ trái qua phải
    void SapXep(int a[][10], int m, int n)
    {
      int t;
      for (int i  = 0; i < m*n - 1; i++)
        for (int j = i+1; j < m*n; j++)       if (a[i/m][i%n] > a[j/m][j%n] )
          {
            t = a[i/n][i%n];
            a[i/m][i%n] = a[j/m][j%n];
            a[j/m][j%n] = t;
          }
    }
    

No comments:

Post a Comment

Có thể post link nhaccuatui, youtube, link hình và link mp3

[size="cở chữ"]Chữ[/size], [color="màu chữ"]Chữ[/color]

Chèn Emoticons
:) :)
:( :(
:( :((
:)) :))
=(( =((
=)) =))
;) ;)
:D :D
:X :X
X( X(
~X( ~X(
:-*
[-(
8-x 8-x
I-)

Recent Posts

    Recent Comments

    Back to top