您的位置:首页 > 移动开发 > IOS开发

我的IOS学习历程-第五天

2015-10-15 20:18 363 查看
今天主要是讲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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: