//
// main.m
// C4_一维数组
//
// Created by lanou3g on 15/7/3.
// Copyright (c) 2015年 yuejie. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
// // 定义一个简单的一维数组
// int arr[5] = {1, 2, 3, 4, 5};
// printf("%d\n",arr[4]);
// // C语言中,系统会对越界产生一个警告,当前访问元素超出了下标的最大值,OC里数组越界则会产生崩溃
// // 遍历数组
// int arr[] = {4, 3, 2, 1};
// for (int i = 0; i < 4; i++) {
// printf("%d\n",arr[i]);
// }
// // 练习1.
// int arr[20] = {0};
// // 定义一个用来保存和值的变量
// int sum = 0;
// int max = 0, min = 70;
// int maxIndex = 0, minIndex = 0;
// // 筛选出最大值和最小值
// for (int i = 0; i < 20; i++) {
// arr[i] = arc4random() % (70 - 30 + 1) + 30;
// sum += arr[i];
// max = arr[i] > max ? arr[i] : max;
// min = arr[i] < min ? arr[i] : min;
// printf("%d\n",arr[i]);
// }
// // 找出最大值和最小值的下标
// for (int i = 0; i < 20; i++) {
// if (max == arr[i]) {
// maxIndex = i;
// }
// if (min == arr[i]) {
// minIndex = i;
// }
// }
// printf("总和为 = %d\n",sum);
// printf("最大值为%d,是第%d个数\n",max,maxIndex);
// printf("最小值为%d,是第%d个数\n",min,minIndex);
// // 练习2.
// // 复制两个数组
// // 定义两个数组,长度相同
// int arr[20] = {0}, brr[20] = {0};
// // 给其中一个数组进行随机数赋值
// for (int i = 0; i < 20; i++) {
// arr[i] = arc4random() % (70 - 30 + 1) + 30;
// // 给brr数组进行赋值操作
// brr[i] = arr[i];
// }
// // 用数组保存和值
// int arr[28] = {0};
// // 循环写出1000种情况
// for (int a = 0; a < 10; a++) {
// for (int b = 0; b < 10; b++) {
// for (int c = 0; c < 10; c++) {
printf("%d%d%d\t",a,b,c);
// arr[a + b + c]++;
// }
// }
// }
// for (int i = 0; i < 28; i++) {
// printf("%d\n",arr[i]);
// }
// int arr[28] = {0};
// for (int a = 0; a < 10; a++) {
// for (int b = 0; b < 10; b++) {
// for (int c = 0; c < 10; c++) {
// arr[a + b + c]++;
// }
// }
// }
// for (int i = 0; i < 28; i++) {
// printf("%d\n",arr[i]);
// }
// int a[10] = {0}, b[10] = {0}, c[10] = {0};
// for (int i = 0; i < 10; i ++) {
// a[i] = arc4random() % (40 - 20 + 1) + 20;
// b[i] = arc4random() % (40 - 20 + 1) + 20;
// c[i] = a[i] + b[i];
// printf("%d\t",c[i]);
// }
// // 冒泡排序 (每次循环都把大的数向最后移)
// int arr[6] = {2, 1, 6, 5, 4, 3};
// // 外不循环次数-1: 循环执行到还有数字未进行排序时,只需把未排序的两个数字交换即可,执行次数是数组个数-1
// for (int i = 0; i < 6 - 1; i++) {
// // 内不循环-1: 为了防止越界,在内部循环处-1
// for (int j = 0; j < 6 - 1 - i; j++) { // 6-1-i 为了防止不必要的比较
// if (arr[j] > arr[j + 1] ) {
// int temp = 0;
// temp = arr[j];
// arr[j] = arr[j + 1];
// arr[j + 1] = temp;
// }
// }
// }
// for (int i = 0; i < 6; i++) {
// printf("%d\n",arr[i]);
// }
// int arr[6] = {2, 1, 6, 5, 4, 3};
// for (int i = 0; i < 6 - 1; i ++) {
// for (int j = 0; j < 6 - 1 - i; j++) {
// if (arr[j] > arr[j + 1]) {
// int temp = 0;
// temp = arr[j];
// arr[j] = arr[j + 1];
// arr[j + 1] = temp;
// }
// }
// }
// for (int i = 0; i < 6; i++) {
// printf("%d\n",arr[i]);
// }
// int arr[6] = {12, 14, 11, 15, 1, 4};
// for (int i = 0; i < 6 - 1; i++) {
// for (int j = 0; j < 6 - 1 - i; j++) {
// if (arr[j] > arr[j + 1]) {
// int temp = arr[j];
// arr[j] = arr[j + 1];
// arr[j + 1] = temp;
// }
// }
// }
// for (int i = 0; i < 6; i++) {
// printf("%d\n",arr[i]);
// }
// // 练习2.
// // 定义长度为10的整型数组
// int arr[10] = {0};
// // 产生随机数
// for (int i = 0; i < 10; i++) {
// arr[i] = arc4random() % (40 - 20 + 1) + 20;
// }
// // 对随机数进行排序
// for (int j = 0; j < 10 - 1; j++) {
// for (int k = 0 ; k < 10 - 1 - j; k++) {
// if (arr[k] > arr[k + 1]) {
// int temp = arr[k];
// arr[k] = arr[k + 1];
// arr[k + 1] = temp;
// }
// }
// }
// // 打印结果
// for (int i = 0; i < 10; i++) {
// printf("%d\n",arr[i]);
// }
// // 字符数组和字符串
// int arr[6] = {1, 2, 3, 4, 5, 6};
// // 字符数组
// char str[6] = {'i', 'P', 'h', 'o', 'n', 'e'};
// // 对下标是5的元素进行赋值
// str[5] = 'y';
// for (int i = 0; i < 6; i++) {
// printf("%c\n",str[i]);
// }
// // 字符串
// char str[] = "iPhone";
// // 字符数组
// char str1[] = {'i', 'P', 'h', 'o', 'n', 'e'};
// printf("%ld\n",sizeof(str));
// // 区别在于'\0',\0是字符串结束的标志,有\0的字符数组称为字符串
// // 关于字符串的功能函数
// char str[10] = "iPhone";
// // 字符串长度
// printf("%ld\n",strlen(str)); // strlen是肉眼所见的字符串的长度
// printf("%ld\n",sizeof(str)); // sizeof是字符串所占空间大小,包括'\0'
// // 字符串的拷贝
// char newStr[10] = "";
// strcpy(newStr, str); // 任何内容被const所修饰,内容不会发生变化
// printf("%s\n",newStr);
// // 字符串的拼接
// char str1[20] = "I have ";
// char str2[20] = "iPhone";
// strcat(str1, str2);
// printf("%s\n",str1);
// // 被拼接的字符串长度要足够
// // 字符串比较
// char str1[] = "abc";
// char str2[] = "ab";
// printf("%d\n",strcmp(str1, str2));
// // 练习3.
// char str[] = "jj hh dd aa ss zz";
// int count = 0;
// long lenth = strlen(str);
// for (int i = 0; i < lenth; i++) {
// if (str[i] == ' ') {
// count++;
// }
// }
// printf("%d\n",count);
// // 练习4.
// char str[] = "eupnjfa";
// long j = strlen(str);
// for (long i = j - 1; i >= 0; i--) {
// printf("%c\n",str[i]);
// }
// // 反向输出
// for (int i = 0; i < strlen(str) / 2; i++) {
// char c = str[i];
// str[i] = str[strlen(str) - 1 - i];
// str[strlen(str) - 1 - i] = c;
// }
// printf("%s\n",str);
return 0;
}