//二维数组的定义:是特殊的一维数组,里面包含多个一维数组
//多维数组:每多一维就意味着需要更多的容器来装载之前的维度
//二维数组的表现形式: 数组名[常量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]的3行4列的二维数组,然后把行和列交换赋给另外一个二维数组
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] 3层4行3列[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、(**)有一个7行6列的二维数组,要求编程找出最大的元素,并输出 所在的行和列。
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;
}