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

来源:互联网 发布:在线简谱制作软件 编辑:程序博客网 时间:2024/04/27 18:18

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]);//        }//    }



0 0
原创粉丝点击