我的IOS学习历程-第五天
今天主要是讲2维数组以及多维数组的定义表示以及应用
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
声明一个二维数组
数组数据类型 数组名[第一维长度][第二维长度] = {值1,值2,....};
一般第一维叫行 第二维叫列
声明一个三行四列的整型二维数组
int a[3][4] = {
{1, 6, 112, 15},
{12, 17, 18, 22},
{2, 3, 5, 66}
};
// 访问二维数组的元素
printf("%d ",a[1][2]);
printf("%d ",a[2][1]);
a[1][3] = 33;
printf("%d ",a[1][3]);
声明一个四行五列的整型二维数组并且随机赋值20 - 100 之间的数
int a[4][5];
// 循环赋值
// 遍历二维数组
// 外层循环 控制行数
for (int i =0; i <= 3; i++) {
for (int j = 0; j <= 4 ; j++) {
// 内层循环 控制列数
a[i][j] = arc4random() % 81 + 20;
// 打印二维数组
printf("%d ",a[i][j]);
}
printf("\n");
}
int a[3][6] = {0};
int b[6][3] = {0};
for (int i = 0; i <= 2; i++) {
for (int j = 0; j <= 5; j++) {
a[i][j] = arc4random() % 41 + 10;
printf("%d ",a[i][j]);
b[j][i] = a[i][j];
}
printf("\n");
}
printf("\n");
for (int i = 0; i <= 5; i++) {
for (int j = 0; j <= 2; j++) {
printf("%d ",b[i][j]);
}
printf("\n");
}
int a[3][4];
int max = 0,min = 0;
int row = 0,line = 0;
for (int i = 0; i <= 2; i++) {
for (int j = 0; j <= 3; j++) {
a[i][j] = arc4random() % 100;
min = a[0][0]; // 给一个数组中的数
printf("%2d ",a[i][j]);
if (max < a[i][j]) {
max = a[i][j];
row = i;
line = j;
}
if (min > a[i][j]) {
min = a[i][j];
}
}
printf("\n");
}
printf("max = %d min = %d\n",max,min);
printf("i = %d j = %d",row,line);
字符串数组
char str1[] = {'i', 'p', 'h'};
char str2[] = "iph";
这个字符串数组 保存了3个字符串且每个字符串20个字符
注意: 声明时 第二维下标 代表每个字符串的长度 切记不要越界
char str3[3][20] = {
"wanglong",
"wuyuchen",
"zhuangyong"
};
取出字符串数组中 某一个字符串
用一维下标取出整个字符串 从零开始
赋值字符串
字符串在进行赋值的时候 需要使用字符串拷贝
strcpy(str3[0], "long");
printf("%s",str3[0]);
char a[6][20] = {
"zhangwen",
"wuyuchen",
"zhuangzhuang",
"liuhang",
"yangbingqi",
"zangjie"
};
// 定义一个最大长度
unsigned long max = 0;
char str[20];
for (int i = 0; i <= 5; i++) {
strlen(a[i]);
if (max < strlen(a[i])) {
max = strlen(a[i]); // 可以强制转化类型 加()
strcpy(str, a[i]);
}
}
printf("%s:%lu",str,max);
char a[3][100] = {
"zhangwen",
"wuyuchen",
"xuyang"
};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2 - i; j++) {
if (strcmp(a[j], a[j + 1]) > 0) {
char temp[100] = {0};
strcpy(temp, a[j]);
strcpy(a[j], a[j + 1]);
strcpy(a[j + 1], temp);
}
}
}
for (int i = 0; i < 3; i++) {
printf("%s ",a[i]);
}
三维数组
声明一个两层三行四列的整型数组
int array[2][3][4] = {
{
{1,2,3,4},
{5,63,24,22},
{14,23,4,35},
},
{
{3,23,23,33},
{34,37,55,2},
{33,45,66,22},
},
};
printf("%d ",array[1][1][2]);
array[1][2][1] = 42;
printf("%d",array[1][2][1]);
需求: 声明一个三维数组 3层 5行 3列 随机赋值,赋值50 100 之间数
int a[3][5][3] = {0};
int sum;
// 最外层控制层数
for (int i = 0; i <= 2; i++) {
// 中间层控制行数
for (int j = 0; j <= 4; j++) {
// 最内层控制列数
for (int k = 0; k <= 2; k++) {
a[i][j][k] = arc4random() % (100 - 50 + 1) + 50;
sum++;
printf("%d ",a[i][j][k]);
}
printf("\n");
}
printf("\n");
}
printf("%d",sum);
三位数组计算元素个数 下标相乘
定义数组时可以不给第一维的个数
1.初值不够一行时 系统自动补起一行,补0
2.初值刚刚够1行 啥也不补
3.初值超过1行不足2行时 自动补齐 补0
char map[10][10] = {
//10行10列的数组地图
{'#','#','#','#','#','#','#','#','#','#'},//0
{'#','0',' ',' ',' ','#',' ','#',' ',' '},//1
{'#','#',' ','#','#','#',' ','#',' ','#'},//2
{'#','#',' ',' ',' ',' ',' ','#',' ','#'},//3
{'#','#','#',' ','#','#',' ','#',' ','#'},//4
{'#',' ','#',' ',' ','#',' ','#',' ','#'},//5
{'#',' ','#',' ',' ','#',' ','#',' ','#'},//6
{'#',' ','#',' ',' ','#',' ','#',' ','#'},//7
{'#',' ',' ',' ',' ','#',' ',' ',' ','#'},//8
{'#','#','#','#','#','#','#','#','#','#'},//9
//0 1 2 3 4 5 6 7 8 9
};
for (int i = 0; i <= 9; i++) {
for (int j = 0; j<= 9; j++) {
printf("%c ",map[i][j]);
}
printf("\n");
}
//初始坐标
int startX = 1;
int startY = 1;
// 出口坐标
int endX = 1;
int endY = 9;
while (map[endX][endY] != '0') {
printf("请输入方向:");
char choose = 0;
scanf("%c",&choose);
switch (choose) {
case 'w':
if (map[startX - 1][startY] != '#') {
map[startX][startY] = ' ';
startX--;
map[startX][startY] = '0';
}
break;
case 's':
if (map[startX + 1][startY] != '#') {
map[startX][startY] = ' ';
startX++;
map[startX][startY] = '0';
}
break;
case 'a':
if (map[startX][startY - 1] != '#') {
map[startX][startY] = ' ';
startY--;
map[startX][startY] = '0';
}
break;
case 'd':
if (map[startX][startY + 1] != '#') {
map[startX][startY] = ' ';
startY++;
map[startX][startY] = '0';
}
break;
default:
break;
}
printf("\n");
for (int i = 0; i <= 9; i++) {
for (int j = 0; j <= 9; j++) {
printf("%c",map[i][j]);
}
printf("\n");
}
}
return 0;
}
浙公网安备 33010602011771号