我的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;
}
#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;
}
相关文章推荐
- IOS 通知传值
- IOS 8 基本定位实现
- flash发布ipa安装到ios8真机测试
- iOS中NSString,NSData和char的相互转换,JSON串转化为NSDictionary或NSArray
- IOS NSMutableAttributedString 富文本的设置
- iOS的主要框架介绍
- iOS开发总结之代码规范
- 一个layer可以跟着画完的线移动ios程序 好玩啊。
- 一个iOS bug引发的思考
- 开始iOS 7中自动布局教程(一)
- iOS组件添加圆角、边框的方法
- iOS 9的自定义导航控制器
- iOS 被拒翻译
- iOS每日一记之——————键盘被挡 自动试图上滚
- iOS学习小结(一)
- xcod7开发下 替换字符串中的某个元素
- iOS 与HTML5交互之捕捉HTML5按钮点击事件,获取webview上按钮的点击事件
- 仿ios横向导航(带滑动)
- IOS数据存储NSUserDefaults的用法(轻量级本地数据存储) (转)
- iOS不同界面之间传值的几种方法