//
// main.m
// C5_二维数组
//
// Created by YIem on 8/15/15.
// Copyright (c) 2015 www.yiem.net YIem博客. All rights reserved.
//
import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
if 0
// 二维数组的定义
// 类型 数组名[第一维度(行)][第二维度(列)] = {初值};
int a[5] = {2, 7, 4, 3, 6};
int b[2][3] = {1, 2, 3, 4, 5, 6};
// 数组最后补0
int c[2][3] = {1, 2, 3, 4};
int d[2][3] = {{1, 2}, {3, 4}};
// 第一维度(行数)可以不写 但列数必须要写
int e[][3] = {1, 2, 3, 4, 5, 6};
// 数组名[行][列] 访问元素
printf("%d\n", e[1][0]);
// 二维数组遍历
// 外层循环 控制第一维度(行)
for (int i = 0; i < 2; i++) {
// 内层循环 控制第二维度(列)
for (int j = 0; j < 3; j++) {
printf("%d ", e[i][j]);
}
printf("\n");
}
// 练习: 定义一个4 * 5的二维数组 随机赋值34 - 56 输出打印
int f[4][5] = {0};// 空数组
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
f[i][j] = arc4random() % (56 - 34 + 1) + 34;
printf("%d ", f[i][j]);
}
printf("\n");
}
endif
if 0
// 字符串数组
// 字符的二维数组 字符串的一维数组
char strings[4][20] = {"iPhone", "Sumsung", "Huawei", "ZTE"};
// 获取字符
printf("%c\n", strings[1][4]);
// 获取字符串
printf("%s\n", strings[2]);
// 字符串数组遍历
for (int i = 0; i < 4; i++) {
printf("%s\n", strings[i]);
}
// 练习: 写一个字符串数组 内容为周围四个人名字拼音 遍历输出
char names[][20] = {"JiangXingFei",
"LiZhongRen",
"WangLiQian",
"WangJun",
"ZhouYou",
"YuTao"};
int count = sizeof(names) / sizeof(names[0]);
for (int i = 0; i < count; i++) {
printf("%s\n", names[i]);
}
printf("--------华丽丽的分割线------\n");
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - i - 1; j++) {
if (strcmp(names[j], names[j + 1]) > 0) {
char temp[20] = "";
strcpy(temp, names[j]);
strcpy(names[j], names[j + 1]);
strcpy(names[j + 1], temp);
}
}
}
for (int i = 0; i < count; i++) {
printf("%s\n", names[i]);
}
endif
if 1
// 多维数组
// 三维数组
int a[2][3][4] = {0};
// 层
for (int i = 0; i < 2; i++) {
// 行
for (int j = 0; j < 3; j++) {
// 列
for (int k = 0; k < 4; k++) {
a[i][j][k] = arc4random() % 10;
printf("%d ", a[i][j][k]);
}
printf("\n");
}
printf("\n");
}
// 数组每多一个维度 需要多加一个循环使用
// 数组元素个数 等于各个维度的乘积
endif
return 0;
}