二维数组                  

    //一维数组(一串羊肉串)

    int a[5] = {1, 2, 3, 4, 5};

    

    //二维数组 (好几串羊肉串)

    //定义格式

    //数据类型数组名[行数][列数] = {1, 2, 3, ...}

    

    int b[2][3] = {1, 2, 3, 4, 5, 6};

    int c[2][3] = {{1, 2, 3}, {4, 5, 6}};

    

    //二维数组的个数 = 行数 * 列数

    

    //定义的其他形式

    int array1[2][3] = {1, 2, 3};//没有赋值默认为0

    int arrar2[][3] = {1, 2, 3, 4, 5};//行数可以省略,行数由列数和赋值个数决定

 

    //int array3[2][] = {1, 2, 3, 4, 5};//error, 列数不能省略

    */

    /*

    //二维数组元素的访问

    //格式

    //数组名[行标][列标]

    //行标和列标都是从0开始

    

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

  

    printf("%d\n", a[0][0]);

    printf("%d\n", a[0][1]);

    printf("%d\n", a[0][2]);

    printf("%d\n", a[0][3]);

    

    printf("%d\n", a[1][0]);

    printf("%d\n", a[1][1]);

    printf("%d\n", a[1][2]);

    printf("%d\n", a[1][3]);

    

    printf("%d\n", a[2][0]);

    printf("%d\n", a[2][1]);

    printf("%d\n", a[2][2]);

    printf("%d\n", a[2][3]);

    

    //遍历二维数组

    for (int i = 0; i < 3; i++) {//外层循环控制行数

        for (int j = 0; j < 4; j++) {//内层循环控制列数

            printf("%-3d", a[i][j]);

        }

        printf("\n");

    }

    

    //遍历几维数组就使用几层的for循环

    

    //修改二维数组某个元素

    a[1][2] = 0;

    */

     /*

    //定义一个68列的数组并对每一个元素随机赋值, [23, 98]

    int a[6][8] = {0};

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

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

            a[i][j] = arc4random() % (98 - 23 + 1) + 23;

            printf("%-3d", a[i][j]);

        }

        printf("\n");

    }

    */

    /*

    //定义一个23列的数组随机为每个元素赋值, [10, 20]

    //把这个数组的行和列交换存放到另一个数组中

    int a[2][3] = {0}, b[3][2] = {0};

    printf("数组a:\n");

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

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

            a[i][j] = arc4random() % 11 + 10;

            b[j][i] = a[i][j];//交换行列

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

        }

        printf("\n");

    }

 

    printf("数组b:\n");

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

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

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

        }

         printf("\n");

    }

   */

    

    /*

    //定义一个43列的数组随机赋值, [30,40]

    //求最大值并打印最大值的位置

    int a[4][3] = {0}, max = 0;

//  int  row = 0, col = 0;

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

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

            a[i][j] = arc4random() % 11 + 30;

            max = a[i][j] > max ? a[i][j] : max;

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

        }

        printf("\n");

    }

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

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

//            if (a[i][j] > max) {

//                max = a[i][j];

//                row = i;

//                col = j;

//            }

//        }

//    }

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

    printf("位置:\n");

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

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

            if (a[i][j] == max) {

            printf("%d%d\n", i + 1, j + 1);

            }

        }

    }

    */

    

    /*

    //69列数组随机赋值[66, 99], 求平均值最小值

    int a[6][9] = {0}, min = 99, sum = 0;

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

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

            a[i][j] = arc4random() % (99 - 66 + 1) + 66;

            min = a[i][j] < min ? a[i][j] : min;

            sum += a[i][j];

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

        }

        printf("\n");

    }

 

    printf("min = %d\nAvg = %g\n", min, sum / 54.0);

    */

    

    /*

    //字符数组:  数组中的元素类型char, 一维数组

    //apple

    char str[6] = {'a', 'p', 'p', 'l', 'e', '\0'};

    

    

    //字符串字符数组 = 字符串一维数组

    char str1[] = "apple";

    

    //字符串数组数组中的元素都是字符串字符串又叫字符数组数组嵌套数组所以字符串数组是一个二维数组

    //"love"

    //"is"

    //"everything"

    

    char str2[3][11] = {"love", "is", "everything"};

    //: 3代表字符串的个数, 11代表字符串长度

    

    //使用字符串数组

    printf("%c\n", str2[0][1]);//o

    printf("%c\n", str2[2][4]);//y

 

    //遍历字符串数组打印每个元素

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

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

            if (str2[i][j] == '\0') {

                break;

           }

           printf("%c", str2[i][j]);

       }

       printf(" ");

    }

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

      printf("%s ", str2[i]);

    }

    */

    /*

    //输入一个字符

    char c = '0';

    printf("\n请输入一个字符:");

    scanf("%c", &c);

    printf("您输入的是:%c\n", c);

    

    //清空输入缓冲区

    rewind(stdin);

    

    printf("\n请输入一个字符:");

    scanf("%c", &c);

    printf("您输入的是:%c\n", c);

    */

    

    /*

    //输入一个字符串

    char str[10] = "";//strr[10] = {0};

    printf("输入一个字符串:");

    scanf("%s", str);//输入一个字符串不需要加&

    printf("%s", str);

    */

    /*

    //使用字符串数组存你周围人的姓名

    char names[4][20] = {"齐天大圣", "八戒", "沙和尚", "齐天小圣"};

    unsigned long max = 0;

    //比长度输出最长的名字

    

    //strlen(names[0]);

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

        unsigned long length = strlen(names[i]);

        max = length > max ? length : max;

        if (length == max) {

           printf("%d个名字:%s\n", i + 1, names[i]);

        }

 

    }

    

    //printf("max = %lu\n", max);

     */

    

    /*

    //对整型数组进行冒泡排序

    int a[5] = {10, 6, 4, 7, 9};

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

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

            if (a[j + 1] < a[j]) {

                int temp = a[j];

                a[j] = a[j + 1];

                a[j + 1] = temp;

            }

         }

    }

    printf("排序结果:\n");

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

         printf("%d ", a[i]);

     }

    */

    

    /*

    //对字符串数组进行冒泡排序

    char string[5][20] = {"dashixiong", "guofucheng", "liuneng", "zhaosi", "xiaoshimei"};

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

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

            //对字符串进行比较使用strcmp

            int result = strcmp(string[j], string[j + 1]);

            if (result > 0) {

            //两个字符串交换借助使用第三个字符串

                char temp[20] = {0};

            //字符串又叫字符数组数组不能直接参与运算

                strcpy(temp, string[j]);

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

                strcpy(string[i + 1], temp);

            }

        }

    }

    printf("排序结果:\n");

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

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

    }

    */

    

    //字符串数组

    

    //定义

    //char string[i][j]

    //: i:字符串的个数   j: 字符串的长度

    

    //使用

    //string[i]: 字符串

    //string[i][j]: 字符

    

    //多维数组

    //定义格式

    //数据类型数组名[维度1][维度2][维度3][...] = {1, 2, 3, ...}

    

    //多维数组的元素个数 = 维度1 * 维度2 * 维度3 * ...

    

    //[层数][行数][列数]

    int a[2][3][4] = {0};

    

    //遍历三维数组随机为每个元素赋值, [1, 9]

    

    for (int i = 0; i < 2; i++) {//层数

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

            for (int k = 0; k < 4; k++) {//列数

                a[i][j][k] = arc4random() % 9 + 1;

                printf("%d ", a[i][j][k]);

            }

            printf("\n");

        }

         printf("\n");

    }