iOS开发学习第五课——二维数组、字符串数组、多维数组

   在上周学习过一维数组之后,今天,我更为深入地学习了二维数组.

    //二维数组的定义:是特殊的一维数组,里面包含多个一维数组
   
 //多维数组:每多一维就意味着需要更多的容器来装载之前的维度
   
 //二维数组的表现形式: 数组名[常量1(下标1)][常量2(下标2)] = {1,2,3....n};  常量1代表了行数,常量2代表了列数,此时行数可以省略,因为可以根据列数来计算出行数
   
 //定义一个整型二维数组,其中包括3个一维数组,每维的元素个数为3
   int main(int argc, const char * argv[]) {  
   int a[3][2] = {1,2,3,4,5,6};
    
   
 int b[][3] = {2,3,4,5,6,7,8};
   
 
   
 //随机出一个[ 10 30]34列的二维数组,然后把行和列交换赋给另外一个二维数组
   
 int c[3][4] = {0};
   
 printf("随机出的二维数组为:\n");
   
 for (int i = 0; i < 3; i++) {
       
 for (int j = 0; j < 4; j++) {
           
 //[10 30]
            c[i][j] =
 arc4random() % (30 - 10 + 1) + 10;
           
 printf("%d  ",c[i][j]);
        }
       
 printf("\n");
    }
   
 printf("交换之后的二维数组为: \n");
   
 for (int i = 0; i <4; i++) {
       
 for (int j = 0; j < 3; j++) {
           
 printf("%d  ",c[j][i]);
        }
       
 printf("\n");
    }
   
   
   
 //有一个[30 60]三行四列的二维数组,找出最大的元素,并输出所在的行和列
   
 int d[3][4] = {0},max = 0,row = 0,colum = 0;
   
 printf("随机出的二维数组为:\n");
   
 for (int i = 0; i < 3; i++) {
       
 for (int j = 0; j < 4; j++) {
            d[i][j] =
 arc4random() % (60 - 30 + 1) + 30;
           
 printf("%d  ",d[i][j]);
           
 if (d[i][j] > max) {
                max = d[i][j];
                row = i;
                colum = j;
            }
        }
       
 printf("\n");
    }
   
 printf("最大的元素:%d  :%d  :%d  \n",max,row + 1,colum + 1);
   
   
   
 //用于存放字符变量的数组称为字符数组
   
 //字符数组数以一维数组,元素类型是char
   
 char str1[50] = "XiaoLong";
   
 char str2[50] = "eat";
   
 char str3[50] = "baozi";
   
 //如何把三个字符串合并到一个字符串中去
   
 char strTotal[3][50] = {"XiaoLong","eat","baozi"};
   
 //在字符串数组当中,行数下标可以取单个字符串里面的每个字符
   
 //行数下标和列数下标结合可以取单个字符串的每个字符
   
 //列数的下标最少为当前字符数组里的最长字符串的长度 + 1
   
   
 //如何取字符串
   
 printf("strTotal[2] = %s",strTotal[2]);
   
 //如换取数组里的字符串的所有的字符
   
 printf("strTotal[1][1] = %c",strTotal[1][1]);
   
   
   
 //创建一个字符串数组,内容是人的名字,输出最长的字符串的长度和其内容
   
 char names[4][50] = {"zhangsan","lisi","wangwu","zhaoliu"};
   
 int MaxLength = 0;
   
 int index = 0;
   
 for (int i = 0; i < 4; i++) {
       
 //计算当前字符串的长度
       
 int CurrentLength = (int)strlen(names[i]);//int 类型转换
       
 if (MaxLength < CurrentLength) {
            MaxLength = CurrentLength;
            index = i;
        }
    }
   
 printf("MaxLength = %d,最长的字符串为:%s",MaxLength,names[index]);
   
   
 //创建一个字符串数组,内容是人的名字,对字符串(英文)进行从小到大排序
   
 //接上
   
 for (int  i = 0; i < 4 - 1; i++) {
       
 for (int j = 0; j < 4 - 1 - i; j++) {
           
 //比较
           
 int compareResult = strcmp(names[j], names[j + 1]);
           
 //如果compareResult > 0 ,说明下标为j的字符和下标为j + 1的字符交换位置
           
 if (compareResult > 0) {
               
 char temp[50] = {0};
               
 strcpy(temp,names[j]);//names[j]拷贝给temp
               
 strcpy(names[j], names[j + 1]);
               
 strcpy(names[j + 1], temp);
            }
        }
    }
   
 //输出排序好的人名字符串
   
 for (int i = 0; i < 4; i++) {
       
 printf("%s\n",names[i]);
    }
   
   
 //三维数组  数组名称[常量1][常量2][常量3] = {1,2,3....n};
   
 //a[3][4][3] 343[20 50]的三维数组
   
 int a[3][4][3] = {0};
   
 //循环层数
   
 for (int i = 0; i < 3; i++) {
       
 //循环行数
       
 for (int j = 0; j < 4; j++) {
           
 //循环列数
           
 for (int k = 0; k < 3; k++) {
                a[i][j][k] = arc4random() % (50 - 20 + 1) + 20;
                printf(
"%d  ",a[i][j][k]);
            }
           
 //列数到3列时换行
           
 printf("\n");
        }
       
 //行数到4行时换行
       
 printf("层数\n");
    }
   
   
 return 0;
}

附上今天的几个小练习:

int main(int argc, const char * argv[]) {
   
 //1(**)有一个76列的二维数组,要求编程找出最大的元素,并输出 所在的行和列。
   
 int a[7][6] = {0},max = 0,row = 0,colum = 0;
   
 printf("随机出的数组为:\n");
   
 for (int i = 0; i < 7; i++) {
       
 for (int j = 0; j < 6; j++) {
            a[i][j] =
 arc4random() % (100 - 10 + 1) + 10;
           
 printf("%d  ",a[i][j]);
           
 if (max < a[i][j]) {
                max = a[i][j];
                row = i;
                colum = j;
            }
        }
       
 printf("\n");
    }
   
 printf("最大的元素为:%d  :%d  :%d\n",max,row + 1,colum + 1);
   
   
 //2(**)输入 6 个字符串,并对它们按从小到大的顺序排序后输出。
   
 char b[6][50] = {"ios","andriod","wp","windows","linux","ubuntu"};
   
 for (int i = 0; i < 6 - 1; i++) {
       
 for (int j = 0; j < 6 - 1 - i; j++) {
           
 int compareResult = strcmp(b[j], b[j + 1]);
           
 if (compareResult > 0) {
               
 char temp[50] = {0};
               
 strcpy(temp, b[j]);
               
 strcpy(b[j], b[j + 1]);
               
 strcpy(b[j + 1], temp);
            }
        }
    }
   
 printf("排序后的结果为:\n");
   
 for (int i = 0; i < 6; i++) {
       
 printf("%s\n",b[i]);
    }
    //4.(**)随机生成一个三维数组,编程求深度的平均值,保存在一个二维数组中(相当于一个模仿从上面看)
   
   
 int array5[2][3][5] = {0}, sum = 0;
   
 float array6[3][5] = {0.0};
   
 for (int i = 0; i < 2; i++) {
       
 printf("层数\n");
       
 for (int j = 0; j < 3; j++) {
           
 for (int k = 0; k < 5; k++) {
                array5[i][j][k] =
 arc4random() % 41 +  10;
               
 printf("%d  ", array5[i][j][k]);
            }
printf("\n");
        }
printf("\n");
    }
   
 for (int i = 0; i < 5; i++) {
       
 for (int j = 0; j < 3; j++) {
           
 for (int k = 0; k < 2; k++) {
                sum += array5[k][j][i];
            }
            array6[j][i] = sum / 2.0;
//            printf("%.2f  ", array6[j][i]);
            sum = 0;
        }
//        printf("\n");
    }
   
 printf("平均值\n");
   
 for (int i = 0; i < 3; i++) {
       
 for (int j = 0; j < 5; j++) {
           
 printf("%.2f  ", array6[i][j]);
        }
       
 printf("\n");
    }
    
    return 0;
}

你可能感兴趣的:(c语言,c,学习,编程,二维数组)