zoukankan      html  css  js  c++  java
  • C语言 ---- 数组 iOS学习-----细碎知识点总结

    #pragma mark - 数组:用来存放同一数据类型的数据

    // 数组的定义:类型说明符 数组名[常量表达式] = {值1, 值2, 值3...};
        // 定义一个float类型的数组,用来存储班级学员的分数
        float scores[5] = {89.0, 70.2, 66.0, 90.5, 77.8};
        // 定义一个int类型的数组,用来存放三个人的年龄
        int ages[5] = {23, 28, 19};
        // 定义一个char类型的数组,用来存放iPhone
        char iPhone[10] = {'i', 'P', 'h', 'o', 'n', 'e'}; // 当定义数组的时候不给定数组的元素个数,系统会自动根据后面的赋值情况进行计算
        
        // 字符串的定义形式如下,字符串其实是一个特殊的字符数组,在字符串的最后面系统自动加了''
        char iPhone6s[] = "iPhone6s";
        
        // 在C99之后,数组的元素个数可以使用变量表示,但是不能进行初始化
    //    int count = 5;
    //    int array[count] = {2, 3};
        
        // 数组不能整体参与运算
        
        // 访问数组里面的元素,通过: 数组名 + 下标。下标是从0开始的,数组中最后一个元素的下标是:n - 1(n是数组的元素个数)
        
    //    printf("ages[0] = %d ", ages[5]); // 数组越界,数组越界很可能出现问题
    //    int array1[3] = {2, 3, 4, 6};
        
        for (int i = 0; i < 5; i++) {
            printf("ages[%d] = %d ", i, ages[i]);
        }
        
        // 更改数组中对应位置的值, 数组中的元素是一个变量
        ages[3] = 30;
        
        printf("%s ", iPhone6s); // 输出一个字符串使用%s

    #pragma mark - 冒泡排序,排序后的数组小的元素在前面,大的元素在后面

    int array[6] = {12, 8, 11, 32, 36, 48};
        int count = 0; // 用来记录冒泡排序过程中比较的次数
        for (int i = 0; i < 6 - 1; i++) { // 外层循环控制趟数
            BOOL flag = YES; // 假设数组已经是有序的,YES代表有序,NO代表无序
            for (int j = 0; j < 6 - 1 - i; j++) { // 内层循环控制每趟比较的次数
                if (array[j] > array[j + 1]) { // 如果前面的数比后面的数大的话,把两个数进行交换
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                    flag = NO; // 如果有交换发生,那么说明我之前的假设是错误的,该数组当前是无序的
                }
                count++; // 没进行一次比较,count加1
            }
            if (flag == YES) { // 通过该趟比较,发现没有数据交换,那么说明数组已经是有序的数组,跳出循环。
                break;
            }
        }
        // 循环打印看是否排序成功
        for (int i = 0; i < 6; i++) {
            printf("%d ", array[i]);
        }
        printf("一共比较了%d次", count);

    #pragma mark - 字符数组,用来存放字符类型变量的数组

    char iPhone6[] = {'i', 'P', 'h', 'o', 'n', 'e'};
        char iPhone[] = "iPhone"; // 也称为字符串,系统会自动在最后加''
        printf("%lu ", sizeof(iPhone6));
        printf("%lu ", sizeof(iPhone));
        
        // 字符串操作函数
        // strlen(),求字符串的长度,从第一个字符开始,遇到''结束,每有一个字符,长度加1,计算出来的长度不包括''
        printf("%lu", strlen(iPhone));
    // strcpy()字符串拷贝。strcpy(目标字符串, 源字符串)把源字符串拷贝到目标字符串中,保证目标字符串的长度大于源字符串长度。
        char desString[30];
        char sourceString[] = "I Love You!";
        strcpy(desString, sourceString);
        printf("desString = %s ", desString);

    // strcat()字符串拼接。strcat(字符串1, 字符串2)把字符串2拼接到字符串1的后面。首先找到字符串1中''的位置,然后从该位置开始,把字符串2的所有字符拼接到后面,最后加''
        char str1[20] = "I Love ";
        char str2[] = "You!";
        strcat(str1, str2);
        printf("%s ", str1);

    strcmp()字符串比较。strcmp(字符串1, 字符串2)把字符串1和字符串2中对应位置的字符进行比较,返回第一个不相同字符的ASCII的差值。
        char str1[] = "I Love You!";
        char str2[] = "I Miss You!";
        int value = strcmp(str1, str2);
        printf("%d ", value);

    // 二维数组的定义:数组的数组。
        // 类型 数组名[常量表达式1][常量表达式2] = {0};
        // 定义一个2行3列的数组
        int array[2][3] = {{23, 26, 32}, {12, 39, 20}};
        printf("%d ", array[1][1]); // 从二维数组里面取对应的元素
        array[0][0] = 0; // 更改二维数组里面对应位置的元素
        
        int array1[][3] = {2, 3, 4, 2, 45}; // 对于二维数组来说,可以省略行数,系统会根据列数自动计算行数,不足的补0(整形二维数组)

    // 定义了一个2行3列的数组
        int array[2][3] = {24, 32, 29, 12, 16, 30};
        // 定义一个3行2列的数组来接收array行列交换之后的数据
        int array1[3][2] = {0};
        for (int i = 0; i < 2; i++) { // 外层循环控制行数
            for (int j = 0; j < 3; j++) { // 内层循环控制列数
                // 把array中行和列的元素进行交换
                array1[j][i] = array[i][j];
            }
        }
    // 字符串数组
        char mobileSystem[3][10] = {"iOS", "Android", "WinPhone"}; // 第一个[]里面的数字,表示的是字符串的个数,第二个[]里面的数字表示的是字符串的最大长度 + 1
        
        printf("mobileSystem[0] = %s ", mobileSystem[1]); // 访问字符串数组中的某一个字符串,采用数组名[第一维下标]
        printf("%c ", mobileSystem[2][3]); // 从字符串数组中取某个字符的时候,采用数组名[第一维下标][第二维下标]

  • 相关阅读:
    自我分析和展望
    测试设计说明及结队反思总结
    WordCount项目
    结对编程
    第一周的博客作业
    第一次作业:统计文件字符串字符行的个数
    系统分析与设计结对项目———Wordcount
    第一周的博客作业
    第一次 作业 workcount (基础功能实现)
    触摸点为scrollview上的子控件时,scrollview不能滚动(iOS8)
  • 原文地址:https://www.cnblogs.com/pp123/p/4945598.html
Copyright © 2011-2022 走看看