#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {

   
    //输出数组中4个数的最大数
//    int i = 0, max = 0,a[4] = {0};
//    printf("请输入四个数:");
//    for (i = 0; i<4; i++) {
//        scanf("%d", &a[i]);
//    }
//    max = a[0];
//    for (i = 1; i < 4; i++) {
//        if (a[i] > max) {
//            max = a[i];
//        }
//    }
//    printf("max = %d\n", max);

//    int sum = 0, i = 0 ,a[20];
//
//    for (i = 0; i < 20; i++) ;
//    scanf("%d", &a[i]);
//    sum = sum + a[i];
//    printf("%d",sum);
//}
//
//

    
    
    //求最大公约数,最小公倍数
//    int a = 0 , b = 0;
//    printf("输入两个数:");
//    scanf("%d %d", &a, &b);
//    int num1 = 0,num2 = 0;
//    int team = a % b;
//    while (team != 0) {
//        num1 = num2;
//        num2 = team;
//        team = num1 % num2;
//        
//    }
//    printf("最大公约数是%d", num2);
//    printf("最小公倍数是%d", a * b / num2);
//    
//}

    
//    int a = 0, b = 0;
//    int team = 0,num1 = 0,num2 = 0;
//    printf("please:");
//    scanf("%d %d", &a, &b);
//    if (a > b)
//         num1 = a;
//         num2 = b;
//         team = num1 % num2;
//   while (team != 0) {
//        num1 = b;
//        num2 = team;
//        team = num1 % num2;
//        
//    }
//    printf("%d",num2);
//
//
//}
    //一维数组
    //定义一个整型数组,数组5个元素
//    int array[5] = {9,2,3,4,5};
//    printf("%d", array[2]);
//    }
    //数组3个元素,每个都为0
//    int array[3] = {0};
    //数组5个元素,下表为0的是3,其余的都是0
//    int array[5] = {3};
    //定义数组的时候,[]只能是常量或者常量表达式
//    int array[2+2] = {4,7};
    
    //数组里的每个元素都市变量
    //使用数组元素:数组名[下标],下标从零开始,到元素个数-1;
    //使用数组的时候[]里面可以是变量
    //定义数组和是使用数组的区别:前面是否有类型修饰符;
//    int array[6] ={1,2,5,8,6,199};
//    
//    int i = 2;
//    array[i] = 9;
////    for(int b = 0; b < 5; b++){
////        printf("%d, ", array[b]);
////    }
//    printf("更换的数字%d\n",array[i]);
//    
//    printf("%lu",sizeof(array));
//}

    //sizeof 用来测试一个变量或者一个数据类型所占用的空间
    //数组所占的内存空间 = 数组元素个数 * 元素类型(是一段连续的内存空间)
    //long a = 10;
    //printf("%lu\n",sizeof(a));
    //}
//    
//    //使用数组,要注意不要让下标越界,否则危险
//    //定义数组时候,[] 可以不写元数个数,那么默认会看数组初始化是给了几个元素
//    int array[3] = {1,5,2,54};
//    //这个数组只能储存一个元素
//    int  array[] = {0};
    
    //这个数组只能储存一个元素,显示4字节
//    int array[] = {0};
//    printf("%lu",sizeof(array));
//}

//    double array[3] = {14,23.34,41};
//    printf("%lu",sizeof(array));
//}
 
    //  \t 输出一个Tab键
//    int array[5] = {12,32,4,3,2};
//    for (int i = 0; i < 5; i ++) {
//        printf("%d\t", array[i]);
//    }
//}

//    int array[] ={2,3,4,5,1,7};
//    for (int i = 0; i < 6; i++) {
//        printf("array[%d] = %d\n", i, array[i]);
//        }
//    printf("字节总共是%lu",sizeof(array));
//    }
//    

//    int array[10]= {0};
//    for (int i = 0; i < 10; i++) {
//        array[i] = arc4random() % 101;
//        printf("%d\t",array[i]);
//    }
//}

//    int array[58] = {0};
//    for (int i = 0; i < 58; i++) {
//        array[i] = arc4random() % 101 +100;
//        printf("%d\t",array[i]);
//    }
//}
    //数组是整体,不能够直接参与运算,只能单个元素运算
//    int a[2] ={1,2};
//    int b[2] = {0};
//    a = b;//是错误的
//

//    int array[20] = {0},sum = 0;
//    for (int i = 0; i < 20; i++) {
//        array[i] = arc4random() % 41 + 30;
//        sum +=array[i];
//        printf("%d\t",array[i]);
//    }
//    printf("和是%d",sum);
//}
//    
//    int array[15];
//    int sum = 0;
//    for (int i = 0; i < 15; i++) {
//        array[i] = arc4random() % 41 + 30;
//        printf("%d\t",array[i]);
//          sum += array[i];
//          }
//        printf("总和sum = %d", sum);
//        }

    
//    int array1[5] = {1,2,3,4,5},array2[5] = {0};
//    for (int i = 0; i < 5; i++) {
//        array2[i] = array1[i];
//    printf("%d\t",array2[i]);
//    }
//}

    
    
//    int array[10] = {9,6,38,265,23,65,3},array1[8] = {0};
//    for (int i = 0; i < 8; i++) {
//        array1[i] = array[i];
//        printf("%d\n",array1[i]);
//    }
//}

    //两列打印
//    int array[10] = {0},array1[10] = {0};
//    for (int i = 0; i < 10; i++) {
//        array[i] = arc4random()%101;
//        printf("%d\t",array[i]);
//        array1[i] = array[i];
//        printf("%d\n",array1[i]);
//    }
//}
 
//--------------------------------------------------------------------
//    //两行打印
//    int array[10] = {0},array1[10] = {0};
//    for (int i = 0; i < 10; i++){
//        array[i] = arc4random() % 101;
//        printf("%d\t",array[i]);
//        array1[i] = array[i];
//      }
//    printf("\n");
//    for (int i = 0;i < 10; i++) {
//        printf("%d\t",array1[i]);
//    }
//}
//----------------------------------------------------------------------
//    int array[10] = {0},array1[10] = {0},array3[10] = {0};
//    for (int i = 0; i < 10; i++) {
//        array[i] = arc4random() % 21 + 20;
//        array1[i] = arc4random() % 21 +20;
//        array3[i] = array[i] + array1[i];
//    printf("arra3[%d]%d\t", i, array3[i]);
//    }
//}

//    int a[10] = {0},b[10] = {0},c[10] = {0};
//    for (int i = 0; i < 10; i++) {
//        a[i] = arc4random() % 21 + 20;
//        b[i] = arc4random() % 21 + 20;
//        c[i] = a[i] +b[i];
//        printf("%d + %d = %d\n",a[i],b[i],c[i]);
//    }
//
//}
 
//++++++++++++++++++++++++++++ //冒泡排序++++++++++++++++++++++++++++++++
//
//    int array[10] = {0};
//    for (int i = 0; i < 10; i++) {
//        array[i] = arc4random() % 51+50;
//            printf("%d\t",array[i]);
//    }
//    printf("\n");
//    //外层循环控制比较趟数
//             for (int i = 0; i < 10 - 1; i++){
//                 //内层循环控制每趟的比较次数
//                 //每趟比较次数,随着趟数的增加越来越少
//                 for (int  j = 0;j < 10 - 1 -i ;j++){
//                    //如果前面的数比后面的数大,则交换
//                     if(array[j] >array[j + 1]){
//                         int  temp = array[j];
//                         array[j] = array[j + 1];
//                         array[j + 1] = temp;
//                     }
//                         
//                 }
//            }
//    printf("\n");
//    for (int i = 0; i < 10; i++) {
//        printf("%d\t",array[i]);
//    }
//}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//    int arrray[10] = {0};
//    for (int i = 0; i < 10; i++) {
//        arrray[i]= arc4random() % 51 + 50;
//        printf("%d\t",arrray[i]);
//    }
//         for (int i = 0;i < 10-1; i++){
//             for (int j = 0;j <10-1-i; j++){
//                 if (arrray[j]>arrray[j + 1]){
//                     int team = arrray[j];
//                     arrray[j] = arrray[j + 1];
//                     arrray[j + 1] = team;
//                 }
//             }
//         }
//         printf("\n");
//         for (int i = 0;i < 10; i++){
//             printf("%d\t",arrray[i]);
//         }
//        }
    
    
//    int array[5] = {9,2,3,4,5};
//    int max = array[0];
//    for (int i = 0; i < 5; i++) {
//        if (max > array[i]){
//            max = array[i];
//            printf("%d,",array[i]);
//  
//        }else{
//            printf("%d,",max);
//        }
//    }
//}


//----------------------------//选择排序----------------------------------

//    int array[10] = {0};
//    for (int i = 0; i < 10;i++){
//        array[i] = arc4random() % 31 + 30;
//        printf("%d\t",array[i]);
//    }
//    //外层循环控制趟数
//    for (int i = 0; i < 10 - 1; i++) {
//        int minIndex = i;
//        //如果当前数,比最小值更小
//        for (int j = i + 1; j < 10; j++ ){
//            if (array[j] < array[minIndex]){
//                //更新最小值下标
//                minIndex = j;
//            }
//        }
//        //一趟结束之后如果最小值的下标和开始的时候假定的不是同一个,则交换
//        if (minIndex != i){
//            int temp = array[i];
//            array[i] = array[minIndex];
//            array[minIndex] = temp;
//        }
//        
//        }
//    printf("\n");
//    for (int i = 0; i < 10; i++) {
//        printf("%d\t",array[i]);
//    }
//}

//-----------------------------------------------------------------------
//    int array[8] = {0};
//    for (int i = 0; i < 8; i++) {
//        array[i] = arc4random() % 51 + 50;
//        printf("%d\t",array[i]);
//    }
//
//    for (int i = 0; i < 8 - 1; i++) {
//        int minIndex = i;
//        for (int j = i + 1; j < 8; j++) {
//            if (array[j] < array[minIndex]){
//                minIndex = j;
//            }
//        }
//        if (minIndex != i){
//            int temp = array[i];
//            array[i] = array[minIndex];
//            array[minIndex] =temp;
//        }
//    }printf("\n");
//    for (int i = 0; i < 8; i++) {
//        printf("%d\t",array[i]);
//    }
//}

 
    //字符数组(字符串)//下面两种都正确,而且效果一样
//    char str[10] = {'i','p','h','o','n','e'};
//    
//    char str1[10] = "iphone";
//    for (int i = 0; i < 10; i++) {
//        printf("%c",str1[i]);
//    }
//}
    
    //%s 用来输出字符串,直接跟数组名
    //%s  的工作原理,从数组的第一个元素输出,到\0结束
//    char str1[10] = "iphone";
//    printf("%s",str1);
//}
//    char str1[10] = "iphone";
//    str1[3] = '\0';
//    printf("%s",str1);
//}

//    char str1[10] = "iphone";
//    str1[3] = '\0';
//    for (int i = 0; i < 10;i++ ){
//        printf("%c",str1[i]);
//    }
//}

//    //数组是6个元素
//    char str[] = {'i','p','h','o','n','e'};
//    //此种写法编译器会自动补一个\0,数组是7个元素
//    //重用:\0
//    char str1[] = "iphone";
//    printf("str = %lu\n",sizeof(str));
//    printf("str1 = %lu\n",sizeof(str1));
//    printf("%s\n",str);
//    printf("%s\n",str1);
//}


//    char str[] = {'a','p', 'p','l','e','\0'};
//    char stra[] = "apple";
//    printf("%s\n",str);
//    printf("%s\n",stra);
//    printf("str = %lu, str1 = %lu",sizeof(str),sizeof(stra));
//}
     //(1)strlen()计算字符串长度
    
    //sizeof 运算符,用来测算数据类型或者变量所占内存空间
    //strlen() 是一个函数,用来计算字符串的长度,是不含\0的
    
//    char string[] = "abcdefghijklmnupqrstuvwxyz\0";
//    char strings[10] = {'a'};
//    unsigned long length = strlen(strings);
//    printf("%lu",length);
//}


    //(2)strcpy 字符串拷贝
//    char str1[20] = "aaaaaaaaaaaa";
//    char str2[20] = "iphone";
    //把str2里面的内容拷贝到str1中,拷到\0结束
    //被拷入的字符串,内存的足够大,否则危险
//    strcpy(str1, str2);
//    printf("%s",str1);
//}
//    char str1[] = "aaaaaaaaaaaa";
//    char str2[5] = {'a','b','c','d','e'};
//    strcpy(str1, str2);
//    printf("%s",str1);
//}

    //(3)strcat() 字符串拼接
    //把str2的内容拼到str1后面
    //被拼入的字符串内存足够大
//    char str1[100] = "iphone ";
//    char str2[100] = "android";
//    strcat(str1, str2);
//    printf("%s",str1);
//}
//    char str1[100] = " apple ";
//    char str2[100] = "iphone";
//    char str3[100] = "name";
//    strcat(str2, str1);
//    strcat(str2, str3);
//    printf("%s",str2);
//}
   
    
    //strcmp()字符串比较
//    char str1[5] = "abcee";
//    char str2[6] = "aaaaa";
//    //比较两个字符串是否相等,返回的是ASCII码的差值
//    //相等的话,得到的结果是0;
//    int result = strcmp(str1, str2);
//    printf("%d",result);
//}

    
    
   //查找字符串中的空格数:例如:“I love iOS, i want an iPhone5s”6个空格
//    char str[] = "I love ios, i want an iphone6 plus!";
//    int blank = 0;
//    int i = 0;
//    while (str[i] != '\0') {
//        if (str[i] == ' '){
//            blank++;
//        }
//        i++;
//    }
//    printf("%d",blank);
//    
//}