//
// 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;

}