[TwistedFate]二维数组,字符串数组,多维数组

本文详细介绍了二维数组和字符串数组的声明、初始化、访问、赋值、遍历及字符串数组的取出与操作,同时提供了随机赋值、交换存储等实例,并探讨了三维数组的概念与应用。

1.二维数组

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

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

需求: 声明一个三行四列的二维数组

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


访问该二维数组的元素:

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

二维数组赋值:

a[1][3] = 33;

需求 : 声明一个四行五列的一个整型二维数组 并且随机赋值[20,100]之间的数

int arr[4][5] = {0};


// 循环赋值  遍历二维数组

for(int i = 0;i < 4; i++) {// 外层循环控制行数
for(int j = 0; j < 5;j++){// 内层循环控制列数
<span style="white-space:pre">	</span>arr[i][j] = arc4random() % (100 - 20 + 1) + 20;
<span style="white-space:pre">	</span>printf("%d\t",arr[i][j]);
}
printf("\n");
}

随机赋值[10,50]的数再将一个36列二维数组的行和列交换存储到另一个数组  

  

 int arr1[3][6] = {0};
    for (int i =0; i <3; i++) {
       for (int j =0; j < 6; j++) {
           arr1[i][j] =arc4random() % (50 -10 +1) +10;
            printf("%d\t",arr1[i][j]);
        } 
        printf("\n");
   }
   int arr2[6][3] = {0};
     for (int i =0; i <6; i++) {
         for (int j =0; j < 3; j++) {
           arr2[i][j] = arr1[j][i];
            printf("%d\t",arr2[i][j]);
        }
        printf("\n");
   }
/**
     *  有一个三行四列的二维数组,要求编程找出最大元素和最小元素,并输出所在的行和列
     */
    int  arr[3][4];
   for (int i =0; i <3; i++) {      //外层循环控制行数
        for (int j=0; j <4; j++) {   //内层循环控制列数
            arr[i][j] = arc4random() % (50 -10 +1) +10;
            printf("%d\t",arr[i][j]);
        }
       printf("\n");
    }
   int row1 =0;
   int line1 =0;
    int row2 = 0;
   int line2 =0;
   int max = arr[0][0];
    int min = arr[0][0];
    for (int i =0 ; i <3; i++) {
        for (int j =0; j <4; j++) {
            if (arr[i][j] > max) {
                max = arr[i][j];
               row1 = i;
               line1 = j;
           }
           if (arr[i][j] < min) {
                min = arr[i][j];
               row2 = i;
               line2 = j;
            }
        }
    }
    printf("最大值是%d,下标是%d\t%d,最小值是%d,下标是%d\t%d",max,row1,line1,min,row2,line2);

2.字符串数组    

声明一个字符串数组 保存3个字符串且每个字符串20个字符;

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

char str[3][20] = {"wanglong",
"wuyuchen",
"zhuangyong"
};

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

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

printf("%s\n",str[0]); // 输出结果 wanglong

取出字符串数组中 单个字符

printf("%c",str[0][1]);

字符串赋值:

注意: * 字符串进行赋值的时候 需要使用字符串拷贝strcpy

strcpy(str[0], "zhangpeng");
printf("%s\n",str[0]);//输出结果 zhangpeng

创建一个字符串数组 输出最长字符串的长度

char str[] = "zangjie";
int length = (int)strlen(str);// 强制类型转换 无符号长整型->整型
printf("%d",length);

 /**

     *  // 创建一个字符串数组输出最长字符串的长度

    

     */

       char str4[4][20] = {
            "zhangpeng",
           "wangzjemh",
           "yanggang",
            "songjinfeng"
        };
   char max[] = {0};
    strcpy(max, str4[0]);
    for (int i =0; i <4; i++) {
        if (strlen(max) <strlen(str4[i])) {
           strcpy(max, str4[i]);
        }
   }
    printf("%lu",strlen(max));

    //创建一个字符串数组(内容是你周围一圈人的姓名),对字符串从小到大排序

        char str[5][20] ={
            "zhangpeng",
            "wangzheng",
           "songjinfeng",
            "yanggang",
            "chenmingming",
        };
    for (int i =0; i <5 -1; i++) {
        for (int j =0; j <5 - i -1; j++) {
            if (strcmp(str[j], str[j+1]) >0) {
                char temp[20] = {0};
                strcpy(temp, str[j]);
                strcpy(str[i], str[i +1]);
                strcpy(str[i +1], temp);
                
            }
        }
   }
        //打印结果
        for (int i =0; i <5; i++) {
            printf("%s\n",str[i]);
        }

3.三维数组

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

  int array[2][3][4] = {
        {
            {1,2,5,7},
            {2,4,8,9},
            {3,5,11,22},
       },
        {
           {12,15,16,11},
            {13,16,11,22},
            {22,24,21,21},
        },
    };
    printf("%d\t",array[1][1][2]);
    //三维数组赋值中的元素
    array[1][2][1] =233;
    printf("%d",array[1][2][1]);
 //需求:声明一个三维数组 3层5行3列随机赋值[50,100]间的数
    
    
    int arr[3][5][3] = {0};
    //最外层控制层数
    for (int i =0; i <3; i++) {
       //中间层控制行数
        for (int j =0; j <5; j++) {
            //最内层控制列数
           for (int k =0; k <3; k++) {
               arr[i][j][k] = arc4random() % (100 -50 +1) +50;
                printf("%d\t",arr[i][j][k]);
           }
            printf("\n");
        }
        printf("*****************\n");
        
    }

 

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

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

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

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

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

//    int array[][4] = {1, 2, 3};
//    for (int i = 0; i < 3; i++) {
//        for (int j = 0; j < 4; j++) {
//            printf("%d",array[i][j]);
//        }
//    }



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值