C語言的二維數組

第五天我們學了C語言中的二維數組和字符串數組。

1.二維數組的定義 : 類型修飾符數組名[包含幾個小數組][每個小數組有多少個元素] = {初始值};

// 注意:一維數組可以省略元素個數,二維數組只能省略第一維--小數組的個數

2. 練習1.將一個二維數組的行和列交換,存儲到另外一個數組中去。

   int array[3][4] = {0};

    //第一重循環,遍歷小數組

   for (int i =0; i < 3; i++) {

        // 第二重循環, 遍歷小數組的元素

       for (int j =0; j < 4; j++) {

            // 給每個元素賦值,隨機數範圍0 ~ 49

            array[i][j] = arc4random() %50;

           // 輸出每個元素

            printf("%2d ", array[i][j]);

        }

        //在這相當於是小數組遍歷完畢, 添加換行符

       printf("\n");

    }

   int dest[4][3] = {0};

    printf("行列交換後:\n");

   for (int i =0; i < 4; i++) {

       for (int j =0; j < 3; j++) {

            // 賦值過程需要注意,行列交換去賦值

            dest[i][j] = array[j][i];

           printf("%2d ", dest[i][j]);

        }

       // 美觀

       printf("\n");

    }

練習2.有一個34列的二維數組,要求編程找出最大元素,並輸出所在的行和列。

// 方法一:   

   int array[3][4] = {0};

    //定義變量保存最大值

   int max = 0;

    //定義兩個變量保存位置

   int row = 0, col =0;

    //第一重循環,遍歷小數組

   for (int i =0; i < 3; i++) {

        //第二重循環,遍歷小數組的元素

       for (int j =0; j < 4; j++) {

            array[i][j] = arc4random() %50;

            printf("%2d ", array[i][j]);

           if (max < array[i][j]) {

               // 賦值最大值

                max = array[i][j];

               // 賦值最大值的行和列

                row = i;

                col = j;

            }

        }

       printf("\n");

    }

   printf("最大值:%d\n", max);

   printf(":%d,:%d\n", row, col);

// 方法二:

    int array[3][4] = {0};

    //定義兩個變量保存位置

   int maxRow = 0, maxCol =0;

    //第一重循環,遍歷小數組

   for (int i =0; i < 3; i++) {

        //第二重循環,遍歷小數組的元素

       for (int j =0; j < 4; j++) {

            array[i][j] =arc4random() % 50;

           printf("%2d ", array[i][j]);

           if (array[i][j] > array[maxRow][maxCol]) {

               // 賦值最大值的行和列

                maxRow = i;

                maxCol = j;

            }

        }

       printf("\n");

    }

   printf("max = %d\n", array[maxRow][maxCol]);

    printf("maxRow = %d, maxCol = %d\n", maxRow, maxCol);

   printf("\n");

3.二維數組定義時,元素個數不足時,會自動補齊。

4.字符型數組:字符型二維數組
5.練習:創建一個字符串數組(內容是你周圍一圈人的姓名),對字符串 (英⽂)從小到大排序。

    char strings[4][50] = {"iOS", "Cocos2D-X","Android", "Unity3D"};

   for (int i =0; i < 4 - 1; i++) {

       for (int j =0; j < 4 - i -1 ; j++) {

            //條件判斷 strcmp的返回值大於0的時候是降序排列的,需要交換位置

           if (strcmp(strings[j], strings[j + 1]) > 0) {

               // 交換字符串

                // 字符串不能直接賦值,需要用字符串拷貝函數strcpy

               char temp[50] = {0};

                strcpy(temp, strings[j]);

                strcpy(strings[j], strings[j +1]);

                strcpy(strings[j +1], temp);

            }

        }

    }

   for (int i =0; i < 4; i++) {

        printf("%s\n", strings[i]);

    }

// 注意: 用到了字符型數組的冒泡排序
6.每個字符串長度不可以超過第二維長度 - 1
  每個字符串用數組名加一維下標表示
7.多維數組的定義:
for(int i = 0; i < 層數; i++) {
  for(int j = 0; j < 行數; j++) {
     for(int k = 0; k < 列數; k++) {
        a[i][j][k] = xxx;
     }
  }
}
// 注意:多維數組,多一個[常量表達式]就多一維度, 幾維就對應幾層循環

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章