天天看点

C语言基础-----二维数组,三维数组

一 二维数组 1.二维数组的定义: 数据类型  数组名[行][列] ={ 数值1,数值2......}; 2.二维数组有几行,就代表有几个一维数组. int a[2][3] = {1,2,3,4,5,6}; a[0]  对应的元素是1,2,3    二维数组的元素也是通过下标来访问的,行和列的下标都是从0开始的, a[0][0] 表示数组a的第一个元素. 3.二维数组的元素的个数  =  行数  *  列数 4.二维数组的初始化,可以不写第一维的长度,第一维的位数是根据第二维的长度关系计算出来的. 注意:第二维的长度必须要指定,不然编译的时候会出错. 5.二维数组的遍历: int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; for(int i = 0;i < 3;i++){ for(int j = 0;j < 4;j++{ printf(“%d”,a[i][j]); } printf(“\n"); } 6.习题 将一个二维数组的行和列交换,存储到另外一个数组中去(即将数组的行和列进行交换)     int a[3][5] = {0};

    int b[5][3] = {0};

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

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

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

        }

    }

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

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

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

         }

        printf("\n");

    }     printf("a 数组的值为:\n");     //先从 a[3][5]中取出数值,存放到b[5][3]中     for (int i = 0; i < 3; i++) {

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

            //交换行列的核心代码

            b[j][i] = a[i][j];

        }

    }

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

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

            printf("b 数组的值为:%d ",b[i][j]);

        }

        printf("\n");     } 有一个3行4列的二维数组,要求编程找出最大元素,并输出所在的行和列.     int a[3][4] = {0};

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

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

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

        }

    }

    int max = 0,n = 0,m = 0;

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

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

            //如果最大值比 a[i][j]小,就把 a[i][j]赋值非 max

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

                max = a[i][j];

                n = i;

                m = j;

             }

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

        }

        printf("\n");

    }

   // printf("生成的最大值为:%d元素所在的行为:%d元素所在的列为:%d",max,n,m);

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

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

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

                printf("生成的最大值为:%d 元素所在的行为:%d 元素所在的列为:%d",max,i,j);

            }

        }     } 二 字符串数组 字符数组就是字符串,存放字符串的数组就是字符串数组. 定义字符串数组: char 数组名 [常量表达式1][常量表达式2] = {值1,值2.....}; char string[3][10] = {“iPhone”,”Android”,”win8"};

字符串数组的访问 printf(“%c\n”,string[0][2]); %s 字符串的占位符 访问单个字符:数组名[第一维下标][第二维下标] 访问某个字符串:数组名[第一维下标] printf(“%s”,string[1]);

for(int i = 0;i < 0;i++){ for(int j = 0;j< 0;j++){ if(string[i][j] !=‘\0'){ printf(“%d”,string[i][j]); }else{ break; } } printf(“ "); } printf(“\n");

习题: 创建一个字符串数组,输出最长字符串的长度  char name[5][10] = {"lifang","zhangsan","lisi","wangwu","liuliu"};

//    unsigned long maxLength = 0;

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

//        //判断姓名的长度使用函数 strlen() 得到字符串的长度

//        if (maxLength < strlen(name[i])) {

//            maxLength = strlen(name[i]);

//           

//        }

//    }

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

//        if (maxLength == strlen(name[i])) {

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

//        }

//    } //    printf("的长度最长:%lu\n",maxLength); 创建一个字符串数组,对字符串从小到大排序

 char name1[5][10] = {"lifang","zhang","lisi","wangwu","liuliu"};

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

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

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

//                //定义一个空的字符串

//                char temp[20] = {};

//                strcpy(temp, name1[j]);

//                strcpy(name1[j], name1[j+1]);

//                strcpy(name1[j+1], temp);

//               

//            }

//           

//        } //    }   for (int i = 0 ; i < 5; i++) {      printf("%s\n", name1[i]);   }

字符串数组就是  字符型  二位数组 每个字符串长度  不可超越第二维长度减1; 每个字符串用数组名[一维下标]表示

三三维数组 数组下标在2个以上时,该数组称为多维数组

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

    三维数组的生成

    //表示整型的三维数组,2层4行3列

    //元素个数为  2*3*4=24个

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

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

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

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

            }

        }     }     三维数组的遍历     for (int i = 0; i < 2; i++) {

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

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

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

            }

             printf("\n");

        }

           }

继续阅读