C语言_二维数组

二维数组定义时,可以不指定第一维的⻓度,但必须给定第二维。 

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

 元素个数不⾜足,会⾃自动补⻬齐。

也可以这样定义一个二维数组:

     int array[3][4] = {

        {1, 2, 3, 4},

        {5, 6, 7},

        {9, 10, 11, 12}};



字符串数组:存放字符串的数组。

定义字符串数组:
char 数组名[常量表达式1][常量表达式2] = {1, 2, ...};

例如: char strings[3][10] = {“iPhone” , “Android” , “win8” };该数组包含三个字符串。 

字符串数组 本质上 是二维字符数组

字符串数组元素访问:1、访问某个字符串:数组名[第一维下标]2、访问某个字符 :数组名[第一维下标][第⼆维下标]

字符串数组实为 字符型 二维数组。

每个字符串⻓长度 不可超过第⼆维⻓长度-1。每个字符串⽤用数组名加⼀维下标表⽰示。例如a[0] //代表第一个字符串。 



1. 随机生成一个三行四列的二维数组,找出并打印最大元素及其下标

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

    int max = 0;

    

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

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

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

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

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

        }

        printf("\n");

    }

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

    

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

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

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

                printf("最大值的下标为:(%d)(%d)\n", i, j);

            }

        }

    }



2(**)输入 6 个字符串,并对它们按长度从小到大的顺序排序后输出。

    

    char string[7][10000] = {0};

    

    printf("请输入6个字符串以回车分隔开:\n");

    

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

        scanf("%s", string[i]);

    }

    

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

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

            if (strlen(string[j]) > strlen(string[j + 1])) {

                char temp[10000] = {0};

                strcpy(temp, string[j]);

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

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

            }

        }

    }

    

    printf("按长度从小到大得顺序排列后的字符串为:\n");

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

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

    }




3(**)随机生成一个三维数组,编程求深度的平均值,保存在一个二维数组 (相当于一个魔方从上面看)

    

    int array1[5][5][5] = {0};

    int array2[5][5] = {0};

    

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

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

            int sum = 0;

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

                array1[i][j][k] = arc4random() % 50 + 1;

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

                sum += array1[i][j][k];

            }

            int avg = sum / 5;

            array1[i][j][0] = avg;

            printf("平均深度为:%d", avg);

            printf("\n");

        }

        printf("\n");

    }

    

    printf("存放深度平均值的二维数组为:\n");

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

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

            array2[i][j] = array1[i][j][0];

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

        }

        printf("\n");

    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值