IOS成长中 C语言之数组二

来源:互联网 发布:json2.js 编辑:程序博客网 时间:2024/05/21 06:58

知识点概括:

                 1.二维数组

                 2.字符串数组

                 3.多维数组

多维数组理论上 维数可以任意。
多维数组的元素个数 = 各维数个数乘积。
多维数组占用内存 = 元素个数 乘以 单个元素所占空间。

字符串数组实质是一个二维字符数组,注意每个字符串的长度不能超过第二个维度的长度-1。

    //二维数组的定义和一维数组的定义非常相似,只不过和一维数组相比多了一个维度    //定义数组:数组类型  数组名[行数][列数] = 初值{多个元素赋值要加大括号}//    int a[4][5] = {0};//    //给二维数组中的元素赋值////    //给第一行元素赋值////    for (int  i = 0; i < 5; i++) {////        a[0][i] = i + 1;////    }////    //给第二行元素赋值////    for (int i = 0; i < 5; i++) {////        a[1][i] = i + 6;////    }////    //给第三行元素赋值////    for (int  i = 0; i < 5; i++) {////        a[2][i] = i + 5 + 5 + 1;////    }//    for (int i = 0; i < 4; i++) {//        //内层循环用来控制列数//        for (int j = 0; j < 5; j++) {//            a[i][j] = j + 1 + 5 * i;//            printf("%-2d ", a[i][j]);//        }//        printf("\n");//    }//    printf("交换之后的维维数组:\n");//    //行列交换,存放到另一个数组中//    int b[5][4] = {0};//    for (int i = 0; i < 5; i++) {//        for (int j = 0; j < 4; j++) {//            //获取到数组a中的元素存放到数组b对应的元素中//            b[i][j] = a[j][i];//            printf("%-2d ", b[i][j]);//        }//        printf("\n");//    }    ////    int c[3][4] = {0};//    int max = 0; //存储最大值//    int row = 0, column == 0; //row记录行,column记录列//    //给二维数组赋值//    for (int i = 0; i < 3; i++) {//        for (int j = 0; j < 4; j++) {//            c[i][j] = arc4random() % 21 + 20;//            printf("%d ", c[i][j]);//        }//        printf("\n");//    }//    printf("\n ");//    //遍历数组元素,求出数组元素中的最大值,记录所在行与列//    for (int i = 0; i < 3; i++) {//        for (int j = 0; j < 4; j++) {//            if (c[i][j] > max) {//                max = c[i][j];//                row = i + 1; //记录行//                column = j + 1; //记录列//            }//        }//    }////    printf("最大值:%d 位置是:行:%d 列:%d\n", max, row, column);//    //将所有的最大值的行与列全部输出//    for (int  i = 0; i < 3; i++) {//        for (int j = 0; j < 4; j++) {//            if (c[i][j] == max) {//                printf("最大值:%d 位置是:行:%d 列:%d\n", max, i + 1, j + 1);//            }//        }//    }        //二维数组定义时,第一维下表可以不给(行数可以省略),但是第二维下标必须要指定(列数需要给,列数是换行的一个标准)    //并且第一维下标与第二维下标都必须是常量或者常量表达式//    int a[][3] = {1, 2, 3, 4, 5, 6, 7};//    for (int i = 0; i < 3; i++) {//        for (int j = 0; j < 3; j++) {//            printf("%d", a[i][j]);//        }//        printf("\n");//    }    //字符串数组,存放字符串的数组叫做字符串数组,只不过字符串是存储在一维的字符数组中,所以本质上是一个二维的字符数组//    char str1[10] = "Frank";//    char str[3][10] = {"Frank", "Duke", "iPhone"};//    printf("%s", str[2]);    //查找并输出最长单词//    char str[3][20] = {0};//    printf("请输入三个人的名字:\n");//    scanf("%s%s%s", str[0], str[1], str[2]);//    unsigned long maxlength = 0;//    for (int i = 0; i < 3; i++) {//        if (strlen(str[i]) > maxlength) {//            maxlength = strlen(str[i]);//        }//    }//    for (int  i = 0; i < 3; i++) {//        if (strlen(str[i]) == maxlength) {//            printf("最长单词是:%s 长度是:%ld\n", str[i], maxlength);//        }//    }        //有10个联系人的通讯录(假设中有人名),按姓名(英文)从小到大排序//    char str[10][20] = {"Lizhikun", "Huangqin", "Chenghang", "Duyulo", "Chenxiao", "Tiansen", "Wanghui", "Jiangxiao", "Xiangxin", "Guoten"};//    char str[10][20] = {0};//    printf("请输入10个人名:\n");//    for (int i = 0; i < 10; i++) {//        scanf("%s", str[i]);//        getchar();//    }//    char tempStr[10] = {0}; //存储临时字符串    //数组名代表数组的地址,是一个常量地址,不可修改//    for (int i = 0; i < 9; i++) {//        for (int j = 0; j < 9 - i; j++) {//            if (strcmp(str[j], str[j + 1]) < 0) {//                //对字符串赋值操作时,要使用strcpy函数//                strcpy(tempStr, str[j]);  //将str[j]字符串中的内容拷贝到临时字符数组tempStr中//                strcpy(str[j], str[j + 1]);//                strcpy(str[j + 1], tempStr);//                //            }//        }//    }//    printf("排序好之后的输出:\n");//    for (int i = 0; i < 10; i++) {//        printf("%s\n", str[i]);//    }










0 0
原创粉丝点击