// 数组定义:保存同种数据类型的多个数据
// 声明一个数组 保存年龄
// [3] 3 代表的数组中元素个数
// {} 中值 是数组中元素的初值 用逗号隔开
// int 表示数组中每一个元素的数据类型
// 声明数组公式
// 数据类型 数组名字[常亮表达式]= {初值1,初值2,...};
// int ageArray[3] = {27, 19, 22};
// float scoreArray[5] = {55.5, 66.6, 77.7, 88.8, 99.9};
//
// 数组元素个数可以用变量来表示 但是不可以进行初始化
// int count = 5;
// int array[count] = {1, 3, 5, 7, 9};
//
// 如果声明数组时 数组元素的个数大于 给出的数组元素初值的个数 系统自动补0
// int array2[5] = {2, 5, 7, 0, 0};
//
//
//
// // 相当于 int array3[5] = {0, 0, 0, 0, 0};
// int array3[5] ={0};
//
//
//
//
// // 声明的时候没有给定元素个数 那么初值有几个元素 这个数组就又几个元素
// int array4[] = {1, 4, 6, 7, 9};
//
//
//
//
//
// // 声明字符类型数组 i p h o n e
// char str[10] = {'i', 'p', 'h', 'o', 'n', 'e'};
//
//
//
//
//
// // 字符串
// char str1[] = "iphone";
// 取出数组中元素
// 使用 数组名[下标] 切记:下标从零开始
// int array[3] = {27, 19, 22};
//
// printf("%d ",array[1]);
// // 修改鹏举年龄 19->39(真实年龄)
// array[1] = 39;
// printf("%d ",array[1]);
//
//
//
// // 输出数组中的所有元素 遍历
// // 循环输出
// for (int i = 0; i < 6; i++) {
// pintdf("%d ", array[i]);
// }
// 1、定义个具有20个元素的整型数组,每个元素的取值范围是30-70之间,求数组元素的和。
// int array[20] = {0};
// int sum = 0;
// for (int i = 0; i < 20; i++) {
// int random= arc4random() % (70 - 30 +1) +30;
// // 赋值数组的每一个元素
// array[i] = random;
// printf("%d",array[i]);
// sum += array[i]; // 相当于 sum = sum + array[i];
// }
// printf("%d",sum);
// 2、复制个数组,即两个数组容量样,把其中个数组中的元素复制到另外个数组中。
// int array[5] = {3, 6, 9, 7, 10};
// int array1[5] = {0};
//
// // 遍历数组
// for (int i = 0; i < 5; i++) {
// // 把老数组的值出去来 赋值新数组的对应元素
// array1[i] =array[i];
//
// printf("%d", array1[i]);
// }
// 3、成2个数组,每个数组都有10个元素,元素取值范围20-40之间,数组对应元素相加,放到另外个数组中。
//
// int array[10];
// int array1[10];
// int array2[10];
// for (int i = 0; i < 10; i++) {
// int random = arc4random() % (40 - 20 + 1) + 20;
// array[i] =random;
// int random1 = arc4random() % (40 - 20 +1) + 20;
// array1[i]= random1;
// array2[i] = array[i] + array1[i] ;
// printf("%d",array2[i]);
// }
//
// 数组越界问题
// 系统部会提示你越界 需要你自己注意
// 切记: 不要数组越界
// int array[5] = {1, 3, 5, 7, 9};
// printf("%d",array[5]);
// 数组在内存中 是一段连续的存储区域
// 并且 数组名字就是数组元素的首地址(第一个元素的地址)
// 注意: 数组不能直接赋值
// array1 = array2 错误的
//数组的名字 是元素 首 地址 是一个地址 并且地址是一个常量 常量是程序执行期间不能改变的量 所以数组不能直接赋值
// 冒泡排序
// 精髓 : 前后两个数比较大小 前后大于后面的 两个数交换位置 依次继续
// 比较趟数 5 - 1 比较4趟
// 每趟比较次数 5 - 1 - i(趟数)
// int array[5] = {9, 7, 5, 3, 1};
// // 外层控制比较的趟数
// for (int i = 0 ; i < 5 - 1; i++) {
// // 内层循环 控制每趟比较的次数
// for (int j = 0; j < 5 - i - 1;j++ ) {
// // 比较过程 2个数比大小 前面大 交换
// if (array[j] > array[j+1]) {
// // 交换 通过中间值交换(第三只手)
// int temp = array[j];
// array[j]= array[j+1];
// array[j+1]= temp;
// }
//
// }
//
// }
// for (int j = 0 ; j < 5 ; j++) {
// printf("%d ",array[j]);
// }
//
// 1、随机产10个[20,40]数,并对10个数从到排序。
// int array[10] = {0};
// for (int i = 0; i < 10; i++) {
// int random = arc4random() % (40 - 20 +1 ) + 20;
// array[i] = random;
//
// printf("%d",array[i]);
//
//
// printf("\n");
// }
// for (int i= 0; i < 10 ; i++) {
// for (int k = 0; k < 10; k++) {
// if (array[k] > array[k + 1]) {
// int temp = array[k];
// array[k] = array[k + 1];
// array[k + 1] = temp;
//
// }
// }
// }
// for (int k = 0; k < 10; k++) {
// printf("%d ",array[k]);
// }
//
// 字符数组两种表现形式 iPhone
// 字符串比字符数组多了一个'\0'
// '\0'是用来 结束字符串的
// char str1[] = {'i', 'p', 'h', 'o',
// 'n', 'e'};
// char str2[] = "iPhone"; // 字符串
// // 打印数据类型或者变量的 所占字节数
// // sizeof()
// // %lu 无符号的长正型
// // unsigned long number1 = sizeof(str1)
//
// printf("%lu",sizeof(str1));
//
// 计算字符串长度
// strlen(要计算字符串)
// char str[] = "I Love LanOu";
// // 打印有效长度
// // 从第一个字符开始 如果不是'\0' 长度加1 遇到'\0'结束 并且输出的长度不包含'\0'
// printf("%lu",strlen(str));
//
// 字符串的拷贝
// 拷贝 : 从第一个字符开始拷贝 遇到'\0' 拷贝结束
// 注意 : 目标字符串的长度最好大于源字符串
// char str1[20] = {0}; // 目标字符串
// char str2[] ="I Love LanOu"; // 源字符串
// // strcpy(目标字符串, 源字符串)
// strcpy(str1, str2);
// // 打印字符串 用%s 一个字符一个字符输出 如果不是'\0' 就结束
// printf("%s",str1);
// //
//
//
//
// 字符串拼接
// 注意: 被拼接的字符串长度一定要够接受拼接完的字符串长度
// char str1[100] = "jiang long ";
// char str2[] = "Love zang jie";
//
//
// // 把后面的str2 拼接到 str1 的后面
// strcat(str1 , str2);
// 字符串比较
// char str1[] = "I Love You";
// char str2[] = "I Niss You";
// // 接受比较的结果
// // 从第一个字符开始比较 如果一样 继续看第二个字符 如果不一样 开始进行比较 比较的内容是该字符在ASCKII码表中对应数 前面的减后面的 得到一个返回值 返回值是正数 则前面大 反之 后面的大 然后比较结束 如果返回值是0 那么两个字符串相同
// int number = strcmp(str1, str2);
//
// 查找字符串中的空格数:
// 例如:“I love iOS, i want an iPhone5s”
// 6个空格
// 声明一个变量计算空格数
// int count = 0;
// char str[] = "I love iOS, i want an iPhone5s";
// // 遍历数组
// for (int i = 0; i < strlen(str); i++) {
// // 判断这个字符是不是空格
// if (str[i] ==' ') {
// count++; // 如果是空格 就自增
// }
// }
//
// printf("%d",count);
// 将字符串倒转:
// 例如:“daozhenianshilv”
// 转变成字符串“vlihsnainehzoad”
// (注:是改变字符串本,不是反向输出)
// 声明字符串
// char str[] = "daozhenianshilv";
// // 倒转只需要 倒转长度一半次数
// for (int i = 0; i < strlen(str) / 2; i++) {
// // 前后交换位置 利用第三变量
// char temp = str[i];
// str[i] = str[strlen(str) - i - 1];
// str[strlen(str) - i - 1] = temp;
//
// }
// printf("%s", str);
//