我的IOS学习历程-第五天

今天主要是讲2维数组以及多维数组的定义表示以及应用


#import <Foundation/Foundation.h>


int main(int argc, const char * argv[]) {

 声明一个二维数组

 数组数据类型 数组名[第一维长度][第二维长度] = {1,2,....};

 一般第一维叫行 第二维叫列

 声明一个三行四列的整型二维数组

    int a[3][4] = {

        {1, 6, 112, 15},

        {12, 17, 18, 22},

        {2, 3, 5, 66}

    };

// 访问二维数组的元素

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

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

    

    a[1][3] = 33;

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

 声明一个四行五列的整型二维数组并且随机赋值20 - 100 之间的数

    int a[4][5];

// 循环赋值

// 遍历二维数组

// 外层循环 控制行数

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

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

        // 内层循环 控制列数

            a[i][j] = arc4random() % 81 + 20;

        // 打印二维数组

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

        }

        printf("\n");

    }

    

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

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

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

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

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

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

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

        }

        printf("\n");

    }

    printf("\n");

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

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

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

        }

        printf("\n");

    }

    

    int a[3][4];

    int max = 0,min = 0;

    int row = 0,line = 0;

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

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

            a[i][j] = arc4random() % 100;

            min = a[0][0]; // 给一个数组中的数

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

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

                max = a[i][j];

                 row = i;

                 line = j;

            }

            if (min > a[i][j]) {

                min = a[i][j];

            }

        }

        printf("\n");

    }

    printf("max = %d min = %d\n",max,min);

    

    printf("i = %d j = %d",row,line);

    


 字符串数组

    char str1[] = {'i', 'p', 'h'};

    char str2[] = "iph";

 这个字符串数组 保存了3个字符串且每个字符串20个字符

 注意: 声明时 第二维下标 代表每个字符串的长度 切记不要越界

    char str3[3][20] = {

        "wanglong",

        "wuyuchen",

        "zhuangyong"

    };

 取出字符串数组中 某一个字符串

 用一维下标取出整个字符串 从零开始

 赋值字符串

 字符串在进行赋值的时候 需要使用字符串拷贝

    strcpy(str3[0], "long");

    printf("%s",str3[0]);

    

    char a[6][20] = {

        "zhangwen",

        "wuyuchen",

        "zhuangzhuang",

        "liuhang",

        "yangbingqi",

        "zangjie"

    };

// 定义一个最大长度

    unsigned long max = 0;

    char str[20];

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

        strlen(a[i]);

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

            max = strlen(a[i]); // 可以强制转化类型 ()

            strcpy(str, a[i]);

        }

    }

    printf("%s:%lu",str,max);


    char a[3][100] = {

        "zhangwen",

        "wuyuchen",

        "xuyang"

    };

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

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

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

                char temp[100] = {0};

                strcpy(temp, a[j]);

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

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

            }

        }

    }

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

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

    }

    

 三维数组

 声明一个两层三行四列的整型数组

    int array[2][3][4] = {

        {

            {1,2,3,4},

            {5,63,24,22},

            {14,23,4,35},

        },

        {

            {3,23,23,33},

            {34,37,55,2},

            {33,45,66,22},

        },


    };

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

    array[1][2][1] = 42;

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

 需求: 声明一个三维数组 3 5 3 随机赋值,赋值50 100 之间数

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

    int sum;

// 最外层控制层数

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

// 中间层控制行数

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

// 最内层控制列数

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

                a[i][j][k] = arc4random() % (100 - 50 + 1) + 50;

                sum++;

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

            }

            printf("\n");

        }

        printf("\n");

    }

    printf("%d",sum);

 三位数组计算元素个数 下标相乘

    

 定义数组时可以不给第一维的个数

 1.初值不够一行时 系统自动补起一行,0

 2.初值刚刚够1 啥也不补

 3.初值超过1行不足2行时 自动补齐 0


    char map[10][10] = {

        //1010列的数组地图

        {'#','#','#','#','#','#','#','#','#','#'},//0

        {'#','0',' ',' ',' ','#',' ','#',' ',' '},//1

        {'#','#',' ','#','#','#',' ','#',' ','#'},//2

        {'#','#',' ',' ',' ',' ',' ','#',' ','#'},//3

        {'#','#','#',' ','#','#',' ','#',' ','#'},//4

        {'#',' ','#',' ',' ','#',' ','#',' ','#'},//5

        {'#',' ','#',' ',' ','#',' ','#',' ','#'},//6

        {'#',' ','#',' ',' ','#',' ','#',' ','#'},//7

        {'#',' ',' ',' ',' ','#',' ',' ',' ','#'},//8

        {'#','#','#','#','#','#','#','#','#','#'},//9

        //0   1   2   3   4   5   6   7   8   9

    };

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

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

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

        }

        printf("\n");

    }

    //初始坐标

    int startX = 1;

    int startY = 1;

    // 出口坐标

    int endX = 1;

    int endY = 9;

    while (map[endX][endY] != '0') {

        printf("请输入方向:");

        char choose = 0;

        scanf("%c",&choose);

        switch (choose) {

            case 'w':

                if (map[startX - 1][startY] != '#') {

                    map[startX][startY] = ' ';

                    startX--;

                    map[startX][startY] = '0';

                }

                break;

            case 's':

                if (map[startX + 1][startY] != '#') {

                    map[startX][startY] = ' ';

                    startX++;

                    map[startX][startY] = '0';

                }

                break;

            case 'a':

                if (map[startX][startY - 1] != '#') {

                    map[startX][startY] = ' ';

                    startY--;

                    map[startX][startY] = '0';

                }

                break;

            case 'd':

                if (map[startX][startY + 1] != '#') {

                    map[startX][startY] = ' ';

                    startY++;

                    map[startX][startY] = '0';

                }

                break;

            default:

                break;

        }

        printf("\n");

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

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

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

            }

            printf("\n");

        }

    }

    

    return 0;

}

posted on 2015-10-15 20:18  彩虹直至黑白  阅读(127)  评论(0)    收藏  举报

导航