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]的数再将一个3行6列二维数组的行和列交换存储到另一个数组
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]);
// }
// }
本文详细介绍了二维数组和字符串数组的声明、初始化、访问、赋值、遍历及字符串数组的取出与操作,同时提供了随机赋值、交换存储等实例,并探讨了三维数组的概念与应用。
1997

被折叠的 条评论
为什么被折叠?



