khai báo mảng


Mục tiêu

Kết giục bài học kinh nghiệm này, chúng ta đem thể:

Bạn đang xem: khai báo mảng

  • Hiểu được những thành phần của mảng và những chỉ số mảng
  • Khai báo một mảng
  • Hiểu cơ hội vận hành mảng nhập C
  • Hiểu một mảng được khởi tạo ra như vậy nào
  • Hiểu mảng chuỗi/ ký tự
  • Hiểu mảng nhị chiều
  • Hiểu cơ hội khởi tạo ra mảng nhiều chiều.

Giới thiệu

Có thể các bạn sẽ gặp gỡ trở ngại Khi tàng trữ một tụ hội những thành phần tài liệu như là nhau trong những vươn lên là không giống nhau. Ví dụ, điểm mang đến toàn bộ 11 cầu thủ của một đội nhóm đá bóng cần được ghi nhận nhập một trận đấu. Sự tàng trữ điểm của từng cầu thủ trong những vươn lên là mang tên không giống nhau thì chắc chắn là quấy quả rộng lớn sử dụng một vươn lên là công cộng mang đến bọn chúng. Với mảng từng việc sẽ tiến hành triển khai giản dị và đơn giản rộng lớn. Một mảng là một trong những tụ hội những thành phần tài liệu đem nằm trong loại. Mỗi thành phần được tàng trữ ở những địa điểm tiếp đến nhau nhập bộ lưu trữ chủ yếu. Những thành phần này được gọi là phần tử mảng.

11.1 Các thành phần mảng và những chỉ mục

Mỗi thành phần của mảng được ấn định danh vị một chỉ mục hoặc chỉ số gán mang đến nó. Chiều của mảng được xác lập ngay số chỉ số quan trọng nhằm ấn định danh độc nhất từng thành phần. Một chỉ số là một số trong những nguyên vẹn dương được bao vị lốt ngoặc vuông [ ] bịa tức thì sau thương hiệu mảng, không tồn tại khoảng chừng White ở thân thiện. Một chỉ số chứa chấp những độ quý hiếm nguyên vẹn chính thức vị 0. Vì vậy, một mảng player với 11 thành phần được màn trình diễn như sau:

player[0], player[1], player[2], … , player[10].

Như tiếp tục thấy, thành phần mảng chính thức với player[0], và nên là thành phần sau cùng là player[10] ko cần là player[11]. Vấn đề này là vì vị nhập C, chỉ số mảng chính thức kể từ 0; vì thế nhập mảng N thành phần, thành phần sau cùng đem chỉ số là N-1. Phạm vi được chấp nhận của những độ quý hiếm chỉ số được gọi là miền giới hạn của chỉ số mảng, số lượng giới hạn dưới và số lượng giới hạn trên. Một chỉ số mảng hợp thức cần mang trong mình một độ quý hiếm nguyên vẹn trực thuộc niềm số lượng giới hạn. Thuật ngữ hợp lệ được dùng cho 1 nguyên vẹn nhân đặc biệt đặc thù. Trong C, nếu như người tiêu dùng nỗ lực truy xuất một thành phần ở ngoài mặt hàng chỉ số hợp thức (như player[11] nhập ví dụ bên trên của mảng), trình biên dịch C sẽ không còn đột biến đi ra lỗi. Tuy nhiên, rất có thể nó truy xuất một độ quý hiếm nào là bại dẫn theo thành phẩm ko đoán được. Cũng đem nguy hại ghi chép ck lên tài liệu hoặc mã mệnh lệnh lịch trình. Vì vậy, người thiết kế cần đảm nói rằng toàn bộ những chỉ số là trực thuộc miền số lượng giới hạn hợp thức.

  • Khai báo một mảng:

Một mảng mang trong mình một vài ba đặc điểm riêng lẻ và cần được khai báo Khi dùng bọn chúng. Những đặc điểm này bao gồm:

  • Lớp lưu trữ
  • Kiểu dữ liệu của những thành phần mảng.
  • Tên mảng – xác xác định trí thành phần thứ nhất của mảng.
  • Kích thước mảng – một hằng số có mức giá trị nguyên vẹn dương.

Một mảng được khai báo tựa như cơ hội khai báo một vươn lên là, nước ngoài trừ thương hiệu mảng được theo đòi sau vị một hoặc nhiều biểu thức, được bịa nhập lốt ngoặc vuông [] xác lập chiều nhiều năm của mảng. Cú pháp tổng quát mắng khai báo một mảng như sau:

lớp_lưu_trữ    kiểu_dữ_liệu   tên_mảng[biểu_thức_kích_thước]

Ở trên đây, biểu_thức_kích_thước là một trong những biểu thức xác lập số thành phần nhập mảng và cần ấn định đi ra một trị nguyên dương. Lớp_lưu_trữ là một trong những tùy lựa chọn. Mặc ấn định lớp automatic được sử dụng mang đến mảng khai báo phía bên trong một hàm hoặc một khối mệnh lệnh, và lớp external được sử dụng mang đến mảng khai báo bên phía ngoài một hàm. Vì vậy mảng player được khai báo như sau:

int player[11];

Nên lưu giữ rằng, trong những lúc khai báo mảng, độ dài rộng của mảng được xem là 11, song những chỉ số của từng thành phần phía bên trong mảng được xem là kể từ 0 cho tới 10.

Các qui tắc mệnh danh mảng là như là với qui tắc mệnh danh vươn lên là. Một tên mảng và một tên biến ko được như là nhau, nó dẫn đến việc nhập nhằng. Nếu một sự khai báo vì vậy xuất hiện tại nhập lịch trình, trình biên dịch tiếp tục hiện thông báo lỗi.

  • Một vài ba qui tắc với mảng:
      • Tất cả những thành phần của một mảng đem nằm trong loại. Vấn đề này Tức là, nếu như một mảng được khai báo loại int, nó ko thể chứa chấp những thành phần đem loại không giống.
      • Mỗi thành phần của mảng rất có thể được dùng bất kể điểm nào là nhưng mà một vươn lên là được được chấp nhận hoặc được đòi hỏi.
      • Một thành phần của mảng rất có thể được tham lam chiếu cho tới bằng phương pháp dùng một vươn lên là hoặc một biểu thức nguyên vẹn. Sau đó là những tham lam chiếu thích hợp lệ:
    player[i]; /*Ở bại i là một trong những vươn lên là, song rất cần phải để ý rằng i trực thuộc miền số lượng giới hạn của chỉ số và đã được khai báo mang đến mảng player*/
    player[3] = player[2] + 5;
    player[0] += 2;
    player[i / 2 + 1];
    • Kiểu tài liệu của mảng rất có thể là int, char, float, hoặc double.

11.2 Việc vận hành mảng nhập C

Một mảng được “đối xử” không giống với cùng một vươn lên là nhập C. Thậm chí nhị mảng đem nằm trong loại và độ dài rộng cũng ko thể tương tự nhau. Hơn nữa, ko thể gán một mảng thẳng cho 1 mảng không giống. Thay vì vậy, từng thành phần mảng cần được gán riêng biệt lẻ ứng với từng thành phần của mảng không giống. Các độ quý hiếm ko thể được gán mang đến toàn cỗ một mảng, nước ngoài trừ bên trên thời khắc khởi tạo ra. Tuy nhiên, từng thành phần không những rất có thể được gán trị mà còn phải rất có thể được đối chiếu.


int player1[11], player2[11];
for (i = 0; i < 11; i++)
      player1[i] = player2[i];

Tương tự động, cũng rất có thể đem thành phẩm vì vậy bằng sự việc dùng những mệnh lệnh gán riêng biệt lẻ như sau:


player1[0] = player2[0];
player1[1] = player2[1];

...

player1[10] = player2[10];

Cấu trúc for là cơ hội hoàn hảo nhằm thao tác những mảng.

Ví dụ 11.1:


/* Program demonstrates a single dimensional array */
#include <stdio.h>

void main()
{    
     int num[5];
     int i;
     num[0] = 10;
     num[0] = 70;
     num[2] = 60;
     num[3] = 40;
     num[4] = 50;
     for (i = 0; i < 5; i++)
          pirntf(“\n Number at [%d] is %d”, i, num[i]);
}

Kết ngược của lịch trình được trình diễn mặt mũi dưới:

Number at [0] is 10
Number at [1] is 70
Number at [2] is 60
Number at [3] is 40
Number at [4] is 50

Ví dụ bên dưới nhập những độ quý hiếm vào trong 1 mảng đem độ dài rộng 10 thành phần, hiển thị độ quý hiếm lớn số 1 và độ quý hiếm tầm.

Ví dụ 11.2:


/*Input values are accepted from the user into the array ary[10]*/
#include <stdio.h>

void main()
{
     int ary[10];
     int i, total, high;

     for (i = 0;  i < 10; i++)
     {
         printf(“\nEnter value: %d: “, i + 1);
         scanf(“%d”, &ary[i]);
     }

     /* Displays highest of the entered values */
     high = ary[0];

     for (i = 1; i < 10; i++)
     {
         if (ary[i] > high)
         high = ary[i];
     }
     printf(“\n Highest value entered was %d”, high);

     /* Prints average of value entered for ary[10] */
     for (i = 0, total = 0; i < 10; i++)
          total = total + ary[i];

      printf(“\nThe average of the element of ary is %d”, total/i);
}

Một ví dụ về thành phẩm được trình diễn bên dưới đây:

Enter value: 1: 10
Enter value: 2: 20
Enter value: 3: 30
Enter value: 4: 40
Enter value: 5: 50
Enter value: 6: 60
Enter value: 7: 70
Enter value: 8: 80
Enter value: 9: 90
Enter value: 10: 10
Highest value entered was 90
The average of the element of ary is 46
  • Việc khởi tạo ra mảng:

Các mảng ko được khởi tạo ra tự động hóa, trừ Khi từng thành phần mảng được gán một độ quý hiếm riêng biệt lẻ. Không nên sử dụng những mảng trước lúc đem sự khởi tạo ra tương thích. Vấn đề này là cũng chính vì không khí tàng trữ của mảng ko được khởi tạo ra tự động hóa, vì thế rất dễ khiến cho đi ra thành phẩm không nghĩ tới trước. Mỗi Khi những thành phần của một mảng ko khởi tạo nên dùng trong những biểu thức toán học tập, những độ quý hiếm tiếp tục tồn bên trên sẵn nhập dù lưu giữ sẽ tiến hành dùng, những độ quý hiếm này sẽ không đảm nói rằng đem nằm trong loại như khai báo của mảng, trừ Khi những thành phần của mảng được khởi tạo ra một cơ hội rõ rệt. Vấn đề này đúng không ạ chỉ cho những mảng mà còn phải cho những vươn lên là thường thì.

Trong đoạn mã mệnh lệnh sau, những thành phần của mảng được gán độ quý hiếm vị những sử dụng vòng lặp for.


int ary[20], i;
for(i=0; i<20; i++)
   ary[i] = 0;

Khởi tạo ra một mảng dùng vòng lặp for rất có thể được triển khai với cùng một hằng độ quý hiếm, hoặc những độ quý hiếm được sinh đi ra từ là 1 cấp cho số nằm trong.

Một vòng lặp for cũng rất có thể được dùng nhằm khởi tạo ra một mảng những ký tự động như sau:

Ví dụ 11.3:


#include <stdio.h>

void main()
{
     char alpha[26];
     int i, j;

     for(i = 65, j = 0; i < 91; i++, j++)
     {
          alpha[j] = i;
          printf(“The character now assigned is %c\n”, alpha[j]);
     }
     getchar();
}

Một phần thành phẩm của lịch trình bên trên như sau:

The character now assigned is A
The character now assigned is B
The character now assigned is C
.
.
.

Chương trình bên trên gán những mã ký tự động ASCII cho những thành phần của mảng alpha. Kết ngược là lúc in với format %c, một chuỗi những ký tự động được xuất đi ra screen. Các mảng cũng rất có thể được khởi tạo ra Khi khai báo. Vấn đề này được triển khai bằng sự việc gán thương hiệu mảng với cùng một list những độ quý hiếm phân cách nhau chừng vị lốt phẩy (,) bịa nhập cặp lốt ngoặc nhọn {}. Các độ quý hiếm nhập cặp lốt ngoặc nhọn {} được gán cho những thành phần nhập mảng theo như đúng trật tự xuất hiện tại.

Ví dụ:


int deci[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
static float rates[4] = {0.0, -2.5, 13.75, 18.0};
char company[5] = {‘A’, ‘P’, ‘P’, ‘L’, ‘E’};
int marks[100] = {15, 13, 11, 9}

Các độ quý hiếm khởi tạo ra của mảng cần là những hằng, ko thể là vươn lên là hoặc những biểu thức. Một vài ba thành phần thứ nhất của mảng sẽ tiến hành khởi tạo ra nếu như con số độ quý hiếm khởi tạo ra là thấp hơn số thành phần mảng được khai báo. Các thành phần sót lại sẽ tiến hành khởi tạo ra độ quý hiếm 0. Ví dụ, nhập mảng marks sau thời điểm đem sự khởi tạo ra như bên trên, tư thành phần thứ nhất (từ 0 cho tới 3) ứng được khởi tạo ra là 15, 13, 11 và 9. Các thành phần sót lại có mức giá trị 0. Không thể chỉ khởi tạo ra những thành phần từ một cho tới 4, hoặc kể từ 2 cho tới 4, hoặc kể từ 2 cho tới 5 Khi sự khởi tạo nên triển khai bên trên thời khắc khai báo. Trong C không tồn tại kỹ năng tái diễn sự khởi tạo ra độ quý hiếm.

Trong tình huống sự khởi tạo ra là tường minh, lớp extern hoặc static, những thành phần của mảng được đáp ứng khởi tạo ra là 0 (không như là lớp auto).

Không quan trọng khai báo độ dài rộng của mảng đang rất được khởi tạo ra. Nếu độ dài rộng của mảng được bỏ lỡ Khi khai báo, trình biên dịch tiếp tục xác lập độ dài rộng của mảng bằng phương pháp kiểm đếm những độ quý hiếm đang rất được khởi tạo ra. Ví dụ, sự khai báo mảng external tại đây tiếp tục hướng đẫn độ dài rộng của mảng ary là 5 vì như thế đem 5 độ quý hiếm khởi tạo ra.


int ary[] = {1, 2, 3, 4, 5};
  • Các mảng chuỗi/ký tự:

Một chuỗi rất có thể được khai báo như là một trong những mảng ký tự động, và được kết giục vị một ký tự động NULL. Mỗi ký tự động của chuỗi rung rinh 1 byte, và ký tự động sau cùng của chuỗi luôn luôn luôn luôn là ký tự động ‘\0’. Ký tư ‘\0’ được gọi là ký tự động null. Nó là một trong những mã bay (escape sequence)  tương tự động như ‘\n’, thay cho thế mang đến ký tự động có mức giá trị 0. Vì ‘\0’ luôn luôn là ký tự động sau cùng của một chuỗi, nên những mảng ký tự động cần đem nhiều hơn thế nữa một ký tự động đối với chiều nhiều năm tối nhiều nhưng mà bọn chúng vận hành. Ví dụ, một mảng ary vận hành một chuỗi 10 ký tự động cần được khai báo như sau:


char ary[11];

Vị trí thêm nữa được dùng nhằm tàng trữ ký tự động null. Nên lưu giữ rằng ký tự động kết giục (ký tự động null) là đặc biệt cần thiết.

Các độ quý hiếm chuỗi rất có thể được nhập nhập bằng phương pháp dùng hàm scanf(). Với chuỗi ary được khai báo phía trên, mã mệnh lệnh nhập tiếp tục như sau:


scanf(“%s”, ary);

Trong mệnh lệnh bên trên, ary xác xác định trí điểm nhưng mà thứu tự những ký tự động của mảng sẽ tiến hành tàng trữ.

Ví dụ 11.4:


#include <stdio.h>

void main()
{
    char ary[5];
    int i;
    printf(“\n Enter string: ”);
    scanf(“%s”, ary);
    printf(“\n The string is %s \n\n”, ary);

    for (i = 0; i < 5; i++)
         printf(“\t%d”, ary[i]);
}

Các thành phẩm thực đua lịch trình với những tài liệu nhập không giống nhau như sau:

    • Nếu chuỗi được nhập là appl, thành phẩm tiếp tục là:
The string is appl

97   112  112  108  0

Kết ngược như bên trên là của 4 ký tự động (appl) và ký tự động loại 5 là ký tự động null. Vấn đề này được thấy rõ ràng với mã ASCII cho những ký tự động được in ấn đi ra ở dòng sản phẩm loại nhị. Ký tự động loại năm được in ấn la 0, là độ quý hiếm của ký tự động null.

    • Nếu chuỗi nhập nhập là apple, thành phẩm tiếp tục là:
The string is apple

97   112  112  108  101

Kết ngược phía trên của là một trong những tài liệu nguồn vào đem 5 ký tự động a, p, p, l và e. Nó ko sẽ là một chuỗi cũng chính vì ký tự động loại 5 của mảng ko cần là \0. Một lần tiếp nữa, điều này được thấy rõ ràng vị dòng sản phẩm in đi ra mã ASCII của những ký tự động a, p, p, l, e.

    • Nếu chuỗi được nhập nhập là ap, thì thành phẩm tiếp tục là:
The string is ap

97   112  0    6    100

Trong ví dụ bên trên, Khi chỉ mất nhị ký tự động được nhập, ký tự động loại phụ vương được xem là ký tự động null. Vấn đề này cho biết thêm là chuỗi và đã được kết giục. Những ký tự động sót lại là những ký tự động ko Dự kiến được.

Trong tình huống bên trên, tính cần thiết của ký tự động null trở thành rõ rệt. Ký tự động null xác lập sự kết giục của chuỗi và là cơ hội độc nhất nhằm những hàm thao tác với chuỗi tiếp tục biết đâu là vấn đề kết giục của chuỗi.

Mặc cho dù C không tồn tại loại tài liệu chuỗi, tuy nhiên nó được chấp nhận những hằng chuỗi. Một hằng chuỗi là một trong những mặt hàng những ký tự động được bịa nhập lốt nháy song (“”). Không như là giống như các hằng không giống, nó ko thể được sửa thay đổi nhập lịch trình. Ví dụ như:

Xem thêm: my cup of tea

“Hi Aptechite!”

Trình biên dịch C tiếp tục tự động hóa thêm nữa ký tự động null cuối chuỗi.

C tương hỗ nhiều hàm mang đến chuỗi, những hàm này trực thuộc tủ sách chuẩn chỉnh string.h. Một vài ba hàm được thể hiện nhập bảng 11.1. Cách thao tác của những hàm này sẽ tiến hành thảo luận nhập bài bác 17.

Tên hàm Chức năng
strcpy(s1, s2) Sao chép s2 nhập s1
strcat(s1, s2) Nối s2 vào thời gian cuối của s1
strlen(s1) Trả về chiều nhiều năm của s1
strcmp(s1, s2) Trả về 0 nếu như s1 và s2 là như là nhau; nhỏ rộng lớn 0 nếu như s1<s2; to hơn 0 nếu như s1> s2
strchr(s1, ch) Trả về một con cái trỏ trỏ cho tới địa điểm xuất hiện tại thứ nhất của ch nhập s1
strstr(s1, s2) Trả về một con cái trỏ trỏ cho tới địa điểm xuất hiện tại thứ nhất của chuỗi s2 nhập chuỗi s1

Bảng 11.1

11.3 Mảng nhị chiều:

Chúng tớ tiếp tục biết thế nào là là mảng một chiều. Vấn đề này Tức là những mảng chỉ tồn tại một chỉ số. Các mảng rất có thể đem nhiều hơn thế nữa một chiều. Các mảng đa chiều gom dễ dàng và đơn giản trình diễn những đối tượng người tiêu dùng nhiều chiều, ví dụ điển hình một vật dụng thị với những dòng sản phẩm và cột hoặc tọa chừng screen của sản phẩm tính. Các mảng nhiều chiều được khai báo như là giống như các mảng một chiều, nước ngoài trừ đạt thêm một cặp lốt ngoặc vuông [] nhập tình huống mảng hai phía. Một mảng phụ vương chiều tiếp tục cần thiết phụ vương cặp lốt ngoặc vuông,… Một cơ hội tổng quát mắng, một mảng nhiều chiều rất có thể được màn trình diễn như sau:

storage_class data_type ary[exp1][exp2]….[expN];

Ở bại, ary là một trong những mảng đem lớp là storage_class, loại tài liệu là data_type, và exp1, exp2,….. , expN là những biểu thức nguyên vẹn dương xác lập số thành phần của mảng được kết phù hợp với từng chiều.

Dạng giản dị và đơn giản nhất và thông thường được dùng nhất của những mảng nhiều chiều là mảng nhị chiều. Một mảng hai phía rất có thể coi như là một trong những mảng của nhị ‘mảng một chiều’. Một mảng hai phía đặc thù như bảng chương trình của sản phẩm cất cánh, xe cộ lửa. Để xác lập vấn đề, tớ tiếp tục hướng đẫn dòng sản phẩm và cột quan trọng, và vấn đề được phát âm đi ra từ vựng trí (dòng và cột) được nhìn thấy. Tương tự động vì vậy, một mảng hai phía là một trong những khuông lưới chứa chấp những dòng sản phẩm và cột nhập bại từng thành phần được xác lập độc nhất vị toạ chừng dòng sản phẩm và cột của chính nó. Một mảng hai phía tmp đem loại int với 2 dòng sản phẩm và 3 cột rất có thể được khai báo như sau,

int tmp[2][3];

Mảng này tiếp tục chứa chấp 2 x 3 (6) thành phần, và bọn chúng rất có thể được màn trình diễn như sau:

Dòng/Cột 0 1 2
0 e1 e2 e3
1 e4 e5 e6

Ở bại e1 – e6 màn trình diễn cho những thành phần của mảng. Cả dòng sản phẩm và cột được viết số kể từ 0. Phần tử e6 được xác lập vị dòng sản phẩm 1 và cột 2. Truy xuất cho tới thành phần này như sau:

tmp[1][2];
  • Khởi tạo ra mảng nhiều chiều:

Khai báo mảng nhiều chiều rất có thể kết phù hợp với việc gán những độ quý hiếm khởi tạo ra. Cần cần cảnh giác chú ý cho tới trật tự những độ quý hiếm khởi tạo nên gán cho những thành phần của mảng (chỉ đem mảng externalstatic rất có thể được khởi tạo). Các thành phần nhập dòng sản phẩm thứ nhất của mảng hai phía sẽ tiến hành gán độ quý hiếm trước, tiếp sau đó cho tới những thành phần của dòng sản phẩm loại nhị, … Hãy coi sự khai báo mảng sau:


int ary[3][4] ={1,2,3,4,5,6,7,8,9,10,11,12};

Kết ngược của luật lệ khai báo bên trên tiếp tục như sau:

ary[0][0] = 1   ary[0][1] = 2   ary[0][2] = 3   ary[0][3]= 4ary[1][0] = 5   ary[1][1] = 6   ary[1][2] = 7   ary[1][3] = 8

ary[2][0] = 9   ary[2][1] = 10  ary[2][2] = 11 ary[2][3] = 12

Chú ý rằng chỉ số loại 1 chạy kể từ 0 cho tới 2 và chỉ số loại nhị chạy tử 0 cho tới 3. Một vấn đề cần đừng quên những thành phần của mảng sẽ tiến hành tàng trữ ở những địa điểm tiếp đến nhau nhập bộ lưu trữ. Mảng ary phía trên rất có thể coi như là một trong những mảng của 3 thành phần, từng thành phần là một trong những mảng của 4 số nguyên vẹn, và tiếp tục xuất hiện tại như sau:

Dòng 0 Dòng 1 Dòng 2
1       2             3          4 5       6             7          8 9       10           11        12

Thứ tự động bất ngờ nhưng mà những độ quý hiếm khởi tạo nên gán rất có thể thay cho thay đổi vị mẫu mã group những độ quý hiếm khởi tạo ra lại trong những lốt ngoặc nhọn {}. Quan sát sự khởi tạo ra sau:


    int ary [3][4] ={
                         {1, 2, 3},
                         {4, 5, 6},
                         {7, 8, 9}
                    };

Mảng sẽ tiến hành khởi tạo ra như sau:

ary[0][0]=1       ary[0][1]=2       ary[0][2]=3       ary[0][3]=0ary[1][0]=4       ary[1][1]=5       ary[1][2]=6       ary[1][3]=0

ary[2][0]=7       ary[2][1]=8       ary[2][2]=9       ary[2][3]=0

Một thành phần của mảng nhiều chiều rất có thể được dùng như 1 vươn lên là nhập C bằng phương pháp sử dụng những chỉ số nhằm xác lập thành phần của mảng.

Ví dụ 11.5:


/* Chương trình nhập những số vào trong 1 mảng hai phía. */
#include <stdio.h>

void main()
{
    int arr[2][3];
    int row, col;

    for(row = 0; row < 2; row++)
    {
        for(col = 0; col < 3; col++)
            {
             printf(“\nEnter a Number at [%d][%d]: ”, row, col);
             scanf(“%d”, &arr[row][col]);
            }
    }

    for(row = 0; row < 2; row++)
       {
           for(col = 0; col < 3; col++)
              {
                printf(“\nThe Number at [%d][%d] is %d”,
                row, col, arr[row][col]);
              }
       }
}

Một ví dụ về thành phẩm thực đua lịch trình bên trên như sau:

Enter a Number at [0][0]: 10
Enter a Number at [0][1]: 100
Enter a Number at [0][2]: 45
Enter a Number at [1][0]: 67
Enter a Number at [1][1]: 45
Enter a Number at [1][2]: 230The Number at [0][0] is 10
The Number at [0][1] is 100
The Number at [0][2] is 45
The Number at [1][0] is 67
The Number at [1][1] is 45
The Number at [1][2] is 230
  • Mảng hai phía và chuỗi:

Như tất cả chúng ta tiếp tục biết ở đoạn trước, một chuỗi rất có thể được màn trình diễn vị mảng một chiều, loại ký tự động. Mỗi ký tự động nhập chuỗi được tàng trữ nhập một thành phần của mảng. Mảng của chuỗi rất có thể được tạo ra bằng phương pháp dùng mảng ký tự động hai phía. Chỉ số phía trái xác lập con số chuỗi, và chỉ số phía bên phải xác lập chiều nhiều năm tối nhiều của từng chuỗi. Ví dụ bên dưới khai báo một mảng chứa chấp 25 chuỗi và từng chuỗi có tính nhiều năm tối nhiều 80 ký tự động bao gồm ký tự động null.

char str_ary[25][80];

  • Ví dụ minh hoạ cơ hội dùng của một mảng nhị chiều:

Ví dụ bên dưới minh hoạ cách sử dụng của mảng hai phía giống như các chuỗi.

Xét câu hỏi tổ chức triển khai một list thương hiệu theo đòi trật tự bảng vần âm. Ví dụ tại đây nhập một list những thương hiệu và tiếp sau đó bố trí bọn chúng theo đòi trật tự bảng vần âm.

Ví dụ 11.6


#include <stdio.h>
#include <string.h>
#include <conio.h>

void main()
{
    int i, n = 0;
    int item;
    char x[10][12];
    char temp[12];
    clrscr();
    printf(“Enter each string on a separate line \n\n”);
    printf(“Type ‘END’ when over \n\n”);
   /* Read in the list of strings */
    do
    {
        printf(“String %d: ”, n + 1);
        scanf(“%s”, x[n]);
     } while (strcmp(x[n++], “END”));

    /*Reorder the list of strings */
    n = n – 1;
    for(item = 0; item < n - 1; ++item)
    {
         /* Find lowest of remaining strings */
         for(i = item + 1; i < n; ++i)
            {
                 if(strcmp(x[item], x[i]) > 0)
                 {
                    /*Interchange two strings*/
                    strcpy(temp, x[item]);
                    strcpy(x[item], x[i]);
                    strcpy(x[i], temp);
                  }
            }
    }

    /* Display the arranged list of strings */
    printf(“Recorded list of strings: \n”);

    for(i = 0; i < n; ++i)
       {
           printf("\nString %d is %s", i + 1, x[i]);
       }
}

Chương trình bên trên nhập nhập những chuỗi cho tới Khi người tiêu dùng nhập nhập kể từ “END”. Khi END được nhập nhập, lịch trình tiếp tục bố trí list những chuỗi và in đi ra theo đòi trật tự tiếp tục bố trí. Chương trình đánh giá nhị thành phần tiếp đến nhau. Nếu trật tự của bọn chúng ko tương thích, thì nhị thành phần sẽ tiến hành thay đổi vị trí. Sự đối chiếu nhị chuỗi được triển khai với việc trợ gom của hàm strcmp() và sự thay đổi vị trí được triển khai với hàmg strcpy().

Một ví dụ về thành phẩm thực đua của lịch trình như sau:

Enter each string on a separate line
Type ‘END’ when over
String 1:    has
String 2:    seen
String 3:    alice
String 4:    wonderland
String 5:    END
Record list of strings:
String 1 is alice
String 2 is has
String 3 is seen
String 4 is wonderland

Tóm tắt bài bác học

  • Một mảng là một trong những tụ hội những thành phần tài liệu đem nằm trong loại được tham lam chiếu vị và một thương hiệu.
  • Mỗi thành phần của mảng đem nằm trong loại tài liệu, nằm trong lớp tàng trữ và đem với những đặc điểm.
  • Mỗi thành phần được tàng trữ ở địa điểm tiếp đến nhau nhập bộ lưu trữ chủ yếu. Các thành phần tài liệu được biết như thể những phần tử mảng.
  • Chiều của mảng được xác lập vị số những chỉ số quan trọng nhằm ấn định danh độc nhất từng thành phần.
  • Các mảng rất có thể đem những loại tài liệu như int, char, float, hoặc double.
  • Phần tử của mảng rất có thể được tham lam chiếu bằng phương pháp dùng một vươn lên là hoặc một biểu thức số nguyên vẹn.
  • Một mảng ko thể được khởi tạo ra, trừ Khi từng thành phần được gán một độ quý hiếm riêng biệt lẻ.
  • Các mảng extern static rất có thể được khởi tạo ra Khi khai báo.
  • Mảng hai phía rất có thể coi như là một trong những mảng của những mảng một chiều.

Kiểm tra tiến trình học tập tập

  1. Một ________ là một trong những tụ hội những thành phần tài liệu nằm trong loại và được tham lam chiếu vị và một thương hiệu.

A. Vòng lặp

B. Mảng

C. Cấu trúc

D. Tất cả đều sai

  1. Mỗi thành phần của mảng được ấn định danh vị ________ độc nhất hoặc ________ được gán cho tới nó.

A. Chỉ mục, Chỉ số

B. Miền độ quý hiếm, Chỉ số

C. Tất cả đều sai

  1. Một tên mảng và một tên biến rất có thể như là nhau (Đúng/Sai)
  1. Một thành phần của mảng rất có thể được dùng ngẫu nhiên địa điểm nào là nhưng mà một vươn lên là được được chấp nhận và đòi hỏi. (Đúng/Sai)
  1. Hai mảng, trong cả Khi bọn chúng đem nằm trong loại và độ dài rộng, ko thể sẽ là _________.

A. Điều kiện

B. Sự phủ định

C. bằng phẳng nhau

D. Tất cả đều sai

  1. Một chuỗi được khai báo như là một trong những mảng loại ký tự động, được kết giục vị ký tự động _________.

A. chấm phẩy

B. phẩy

B. NULL

D. Tất cả đều sai

  1. Các mảng rất có thể đem nhiều hơn thế nữa một chiều. (Đúng/Sai)
  1. Sự đối chiếu nhị chuỗi được triển khai với việc trợ giúp của ________ và sự thay đổi vị trí được triển khai vị _________.

A. strcmp, strcpy

B. strcat, strcpy

Xem thêm: vùng nào sau đây có diện tích lớn nhất nước ta

C. strlen, strcat

D. Tất cả đều sai


Bài tập dượt tự động làm

  1. Viết một lịch trình nhằm bố trí những thương hiệu tại đây theo đòi trật tự abc.
George
Albert
Tina
Xavier
Roger
Tim
William
  1. Viết một lịch trình kiểm đếm số ký tự động nguyên vẹn âm nhập một dòng sản phẩm văn bạn dạng.

 

  1. Viết một lịch trình nhập những số tại đây vào trong 1 mảng và hòn đảo ngược mảng
34
45
56
67
89