Bài 1 6 Mảng nhiều chiều

Một phần của tài liệu Bài giảng ngôn ngữ lập trình C (Trang 40 - 42)

Tóm tắt nội dung:

Có thể tạo ra mảng nhiều chiều trong đó mỗi phần tử trong mảng được đánh chỉ số theo nhiều chiều khác nhau. Về mặt tổ chức bộ nhớ thì mảng nhiều chiều được coi là mảng của các phần tử là mảng.

Trong C có thể khai báo một mảng nhiều chiều bằng cách tiếp tục thêm cặp ngoặc vuông [] cùng số phần tử v ào khai báo mảng. Để truy cập vào một phần tử trong mảng nhiều chiều cần phải chỉ ra chỉ số ở các chiều tương ứng.

Ví dụ:

/* khai báo một ma trận 3x3 bằng mảng 2 chiều */ int matrix[3][3];

int i, j;

/* khởi tạo các phần tử của ma trận bằng 0 */ for (i=0; i<3; i++)

for (j=0; j<3; j++) matrix[i][j] = 0;

Về mặt bộ nhớ một mảng 2 chiều thực chất là một mảng mà mỗi phần tử của nó là một mảng khác. Chúng ta hồn tồn có thể qui đổi một mảng 2 chiều về mảng một chiều tương đương. a[0][0] a[0][1] ..... a[0][n-1] a[1][0] ...... a[m-1][0] a[m-1][n-1] ...... b[0] b[0] b[n-1] .... b[n] b[(m-1)*n] b[m*n-1] ...... a[m][n] b[m*n] a[i][j] = b[i*n+j]

Hình 4: Bộ nhớ mảng 2 chiều và mảng 1 chiều tương đương

Chương trình mẫu (cuuchuong.c): Thực hiện tổ chức dữ liệu của một bảng cửu chương bằng

một mảng hai chiều với mỗi phần tử có giá trị là tích của hai số (tương ứng hai chỉ số) trong bảng.

#include <stdio.h> void main()

{

int cuuchuong[10][10]; /* bảng cửu chương cho cả số 0 */ int i, j;

/* tạo giá trị cho bảng cửu chương */ for (i=0; i<=9; i++) for (i=0; i<=9; i++)

for (j=0; j<=9; j++)

cuuchuong[i][j] = i*j; /* giá trị của i x j trong bảng */ printf("Nhap hai so cua bang cuu chuong\n");

printf("So 2: "); scanf("%d", &j);

printf("Giá trị trong bang cuu chuong la %d", cuuchuong[i][j]); }

BÀI TẬP

Câu 1: Một ma trận số ngun X có kích thước 10x10.

a. Hãy lập chương trình tạo ra 100 giá trị ngẫu nhiên cho ma trận trong khoảng [1,10]. b. Tính tổng của tất cả các phần tử nằm trên đường chéo chính.

c. Tính tổng bình phương các số trên hàng chẵn.

d. Tìm số phần tử của ma trận có giá trị nằm trong dải [4, 6].

Câu 2: Viết chương trình tạo ma trận chuyển vị của ma trận A hai chiều. B là ma trận chuyển vị

của ma trận A nếu các phần tử của chúng có quan hệ Bi,j = Ai,j. Tìm thuật tốn để chuyển vị ma trận A song kết quả để ở chính ma trận A.

Câu 3: Lập chương trình con nhân hai ma trận chữ nhật C=AxB. Ma trận A có kích thước là

NxL, ma trận B có kích thước là LxM và ma trận kết quả C có kích thước là NxM.

Một phần của tài liệu Bài giảng ngôn ngữ lập trình C (Trang 40 - 42)