//内存的划分:栈区,堆区,静态区,常量区,代码区
// sizeof();获取一个数据类型(变量)所占存储空间的大小
// int a = 0;
// printf("%lu\n",sizeof(a));
//
//
// printf("%lu\n",sizeof(char));
// printf("%lu\n",sizeof(long int));
//
//
// int b = sizeof(bool);
// printf("%d\n",b);
//
#pragma mark - 数组
//由多个相同数据类型组成的新的数据类型
//数组的定义: 数据类型 数组名[常量表达式] = {初始列表}
// int a[10] = {1,2,3,4,5,6,7,8,9,10};
// float b[5] = {1.0,2.0,3.0}; //表示 b[0] = 1.0, b[1] = 2.0,b[2] = 3.0,b[4] = 0,b[5] = 0
// float c[] = {1.0,2.0,3.0}; //表示 c[0] = 1.0,c[1] = 2.0,c[2] = 3.0,共3个元素
//若常量表达式省略,数组元素个数由展示出的数组元素个数决定
//若常量表达式没有省略,数组元素个数由常量表达式的值决定
//常量表达式!!!!!!!
//数组中元素是一个变量,在过程中也可以被改变
// //数组元素的访问 : 数组名 + 下标
// int array[5] = {2,5,6,7,3};
// printf("%d ",array[4]);
//
// for(int i = 0;i < 5; i++){
// printf("%d ",array[i]);
// }
//定义⼀一个具有20个元素的整型数组,每个元素的取值范围是30-70之间,求数组元素的和
// int array[20] = {0};
// int sum = 0;
// for(int i = 0; i < 20; i++){
// array[i] = arc4random()%(70-30+1)+30;
// printf("%d ",array[i]);
// sum = sum + array[i];
// }
// printf("\n%d",sum);
//复制⼀一个数组,即两个数组容量⼀一样,把其中⼀一个数组中的元素复制到另外⼀一个数组中
// int a[10] = {1,1,1,1,1,1,1,1,1,1};
// int b[10] = {2,2,2,2,2,2,2,2,2,2};
//
// for(int i = 0 ; i < 10 ; i++){
// int c = 0;
// c = a[i];
// a[i] = b[i];
// b[i] = c;
// printf("a[%d] = %d ",i,a[i]);
// printf("b[%d] = %d\n",i,b[i]);
// }
//⽣成2个数组,每个数组都有10个元素,元素取值范围20-40之间,数组对应元素相加,放到另外⼀个数组中
// int a[10] = {0};
// int b[10] = {0};
// int 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 ",c[i]);
// }
#pragma mark - 数组排序
// //冒泡排序
// int a[5] = {9,3,5,7,2};
// //外层循环控制趟数
// // 5 - 1 : 5个数比较4趟
// for (int i = 0 ; i < 5-1; i++){
//
// //内层循环控制比较的次数
// // 5 - i - 1 : 每1趟只需比较5-i-1次, - 1 是为了防止越界,如果越界最大的数将会和 a[5]作比较
// for(int j = 0; j < 5 - i - 1;j++){
//
// //判定
// if (a[j] > a[j + 1]){
// //交换
// int temp = a[j];
// a[j] = a[j + 1];
// a[j + 1] = temp;
//
// }
//
// }
//
// }
// for(int k = 0; k < 5; k++){
// printf("%d ",a[k]);
//
// }
//随机产⽣10个[20,40]数,并对10个数从小到大排序
// int a[10] ={0};
//
// for(int i = 0; i <10;i++){
// a[i] = arc4random()%(40-20+1)+20;
// printf("%d ", a[i]);
//}
// printf("\n");
// for(int j = 0 ; j < 10- 1;j++ ){
// for(int k = 0; k < 10 - j - 1; k++){
//
// if(a[k] < a[k +1]){
// int c = 0;
// c = a[k];
// a[k] = a[k + 1];
// a[k + 1] = c;
// }
// }
//}
// for(int h = 0;h < 10;h++){
// printf("%d ",a[h]);
//
// }
//输入10个数从小到大排列
// int a[10] = {0};
// printf("请输入十个数字:\n");
//
// for(int i = 0 ; i < 10; i++){
// scanf("%d",&a[i]);
//
// }
//
// for( int j = 0; j < 10 - 1; j++){
// for (int k = 0 ; k < 10 - j - 1; j++){
// if(a[k] > a[k + 1]){
// int c = a[k];
// a[k] = a[k + 1];
// a[k + 1] = c;
//
// }
// }
// }
// printf("\n");
// for(int h = 0 ; h < 10 ;h++){
// printf("%d ",a[h]);
//
// }
//
#pragma mark - 字符数组
//定义一个字符数组
// char ch [] = {'i','P','h','o','n','e'};
// char ch_1[] = "iPhone";
//数组元素个数 = 数组所占空间大小 /每个数组元素所占空间大小
//C语言中没有字符串类型,所谓的字符串其实就是一维字符数组+'\0'
// "iPhone" 就等价于{'i','P','h','o','n','e','\0'}
//以第二种方法定义,大小为7,因为其中自动在结尾时添加了'\0',而在第一种方法中\0不可知在何处
// printf("%lu\n",sizeof(ch)/sizeof (char)); //6
// printf("%lu\n",sizeof(ch_1)/sizeof (char)); //7
//
//
//strlen()计算字符串长度
// char ch[] = "iPhone";
// char ch_1[10] = {'i','p','h','o','n','e','\0'};
// printf("%lu",strlen(ch));
// printf("%lu",strlen(ch_1));
// // strlen()时不计算'\0',因为它只占用实际空间并不占用长度
// strcopy() 字符串拷贝
// char ch_2[20] = "iphone6";
// char ch_3[10] = "plus";
//
// strcpy (ch_2,ch_3); //讲字符串 ch_3拷贝到 ch_2中
// for (int i = 0; i < strlen(ch_2); i++) {
// printf("%c",ch_2[i]);
// }
// 输出 plus
// char ch_2[20] = "iphone6";
// char ch_3[10] = "plus";
//
// strcpy (ch_2,ch_3); //讲字符串 ch_3拷贝到 ch_2中
// for (int i = 0; i < 10; i++) {
// printf("%c",ch_2[i]);
// }
// { 输出 plus'倒问号'e6 }
//
// char ch_2[20] = "iphone6";
// char ch_3[10] = "plus9999999999999";
//
// strcpy (ch_2,ch_3); //讲字符串 ch_3拷贝到 ch_2中
// for (int i = 0; i < 20; i++) {
// printf("%c",ch_2[i]);
// }
// char ch_2[20] = "iphone6";
// char ch_3[10] = "plus";
//
// strcpy (ch_2,ch_3); //讲字符串 ch_3拷贝到 ch_2中
// printf("%s",ch_2);
// 输出 plus
// strcat() 字符串拼接
// char ch_2[300] = "iphone6";
// char ch_3[10] = "plus999999999999999999999999";
// printf("%s\n",ch_3);
// strcat (ch_2,ch_3); //讲字符串 ch_3拼接到 ch_2中
// printf("%s",ch_2);
//
//strcmp() 字符串比较
// char a[] = "abcd";
// char b[] = "edf";
// printf("%d",strcmp(b,a));
//输出 4
// char a[] = "abcd";
// char b[] = "adf";
// printf("%d",strcmp(b,a));
// 输出3
// char a[] = "abcd";
// char b[] = "abcd";
// printf("%d",strcmp(b,a));
// 输出0
// char a[] = "abc ";
// char b[] = "abcd";
// printf("%d",strcmp(b,a));
// 输出100,(即 d的 ASCII 码值)
//查找字符串中的空格数:
//例如:“I love iOS, i want an iPhone6Plus”
// int b = 0;
// char a[] = "I love IOS, I want an iPhone6Plus";
// for(int i = 0 ; i < strlen(a); i++){
// if(a[i] == ' '){
// b = b + 1;
// }
//
// }
// printf("%d",b);
// char a[] = "I love iOS, I want an iPhone6Plus";
// for(int i = 0 ; i < strlen(a); i++){
// if(a[i] == 'i'){
// a[i] == 'I';
// }
//
// }
//
//}
// char a[8] = "afjnpue";
// for(int i = 0; i < strlen(a) / 2;i++){
// char b = a[i];
// a[i] = a[strlen(a) - i - 1];
// a[strlen(a) - i - 1] = b;
// }
// printf("%s",a);