// 數組定義:保存同種數據類型的多個數據
// 聲明一個數組 保存年齡
// [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);
//