小小君的C语言第四课

#import <Foundation/Foundation.h>


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

    

   //限时代码

//    int maxValue = 0;

//    for (int i = 0; i < 10; i++) {

//        int ran = arc4random() % (40 - 20 + 1) + 20;

//        printf("%d\n",ran);

//        

//        if (ran > maxValue) {

//            maxValue = ran;

//        }

//    }

//    

//    printf("max = %d\n",maxValue);

    

    

    // 数组定义:保存同种数据类型的多个数据

    // 声明一个数组,保存年龄

    // [3] 3 代表的是数组中元素的个数

    // {}中值 是数组中元素的初值 用逗号隔开

    // int 表示数组中每一个元素的数据类型

    //申明数组公式: 数据类型 + 数组名 [常量表达式] = {初值1, 初值2, 初值3, ... };

    int ageArray[3] = {27, 19, 22};

    

    //数组元素个数可以用变量来表示,但是不可以进行初始化

  //  int count = 5;

  //  int array[count] = {1, 5, 6, 3, 9};     //

    

    //如果声明数组时  数组元素的个数大于 给出的数组元素初值的个数 系统会自动给补0

    int array2[5] = {2, 5, 7};

    

    int array3[5] = {0}; //相当于 int array3[5] = {0, 0, 0, 0, 0};

    

    // 声明的时候没有给定元素的个数 那么初值有几个元素 这个数组就有几个元素

    int array4[] = {1, 4, 6, 8, 9};

    

    //申明一个字符类型数组 i p h o n e

    char str[10] = {'i', 'p', 'h', 'o', 'n' ,'e'};

    //字符串

    char str1[] = "iphone";

    

    //取出数组中元素

    //使用  数组名[下标] 切记: 下标从 0 开始

//    int array[6] = {27, 19, 22, 26, 23, 18};

//    printf("%d  ",array[1]);

//    //修改年龄 19->39

//    array[1] = 39;

//    array[5] = 5;

    

    //输出数组中的所有元素   遍历

//    for (int i = 0; i < 6 ; i++) {

//        printf("%d   ", array[i]);

//    }

    

    //1、定义⼀一个具有20个元素的整型数组,每个元素的取值范围是30-70之间,求数组元素的和。

    int a[20] = {0};

    //声明数组的和

    int sum = 0;

    //遍历数组

    for (int i = 0; i < 20; i++) {

        //随机数

        int ran = arc4random() % (70 - 30 + 1) + 30;

        //赋值数组中的每个元素

        a[i] = ran;

        //求和

        sum += a[i];

    }

    printf("sum = %d\n", sum);

    

    //2、复制⼀一个数组,即两个数组容量⼀一样,把其中⼀一个数组中的元素复制到另外⼀一个数组中。

    int a1[5] = {3, 6, 9, 7, 10};

    int a2[5] = {0};

    //遍历数组

    for (int i = 0; i < 5; i++) {

        //把老数组的值取出来 赋值新数组的对应元素

        a2[i] = a1[i];

        printf("%d  ", a2[i]);

    }

    

    printf("\n");

    

    

    // 3、生成2个数组,每个数组都有10个元素,元素取值范围20-40 之间,数组对应元素相加,放到另外⼀一个数组中。

    int b1[10] = {0};

    int b2[10] = {0};

    int b3[10] = {0};

    for (int i = 0; i < 10; i++) {

        b1[i] = arc4random() % (40 - 20 + 1) + 20;

        b2[i] = arc4random() % (40 - 20 + 1) + 20;

        b3[i] = b1[i] + b2[i];

        printf("%d  ", b3[i]);

    }

    

     printf("\n");

    

    

    // 数组越界问题

    // 系统不会提示你越界  需要你自己注意

    // 切记:不要数组越界

    

    

    int array1[5] = {1, 3, 5, 7, 9};

    printf("%d\n", array1[5]);

    

    

    // 数组在内存当中是一段连续的存储区域

    // 并且 数组的名字 就是 数组元素的首地址(第一个元素的地址)

    // 注意: 数组不能直接赋值 array1 = array2 错误的

    // 数组的名字 是元素首地址 是一个地址 并且地址是一个常量 常量是程序执行期间不能改变的量,所以数组不能直接赋值

    

    //冒泡排序

    

    // 精髓:前后两个数比较大小 前面大于后面的 两个数交换位置 依次继续

    //比较趟数 5 - 1 比较4    n - 1

    //每次比较次数 5 - 1 - i (趟数)  n - 1 - i

    

    int array[5] = {9, 7, 5, 3, 2};

    //外层循环 控制比较的趟数

    for (int i = 0; i < 4; i++) {

        //内层循环 控制每趟比较的次数

        for (int j = 0; j < 4 - i; j++) {

            //比较的过程 2个数比大小 前面大 交换

            if (array[j] > array[j + 1]) {

                //交换  通过中间交换

                int temp = array[j];

                array[j] = array[j + 1];

                array[j + 1] = temp;

            }

        }

    }

    //遍历数组

    for (int i = 0; i < 5 ; i++) {

        printf("%d  ",array[i]);

    }

    

    printf("\n");

    

    // 1、随机产⽣10[20,40],并对10个数从小到大排序。

    

    int c[10] = {0};

    int d = 0;

    for (int i = 0; i < 10 ; i++) {

        //随机生成10个数

        int ran = arc4random() % (40 - 20 + 1) + 20;

        c[i] = ran;

        printf("%d  ",c[i]);


    }

     printf("\n");

    for (int i = 0; i < 9; i++) {

        for (int j = 0; j < 9 - i ; j++) {

            if (c[j] > c[j + 1]) {

                d = c[j];

                c[j] = c[j + 1];

                c[j + 1] = d;

            }

        }

    }

    

    for (int i = 0; i < 10 ; i++) {

        printf("%d  ",c[i]);

    }

    

    // 字符数组两种表现形式

    // 字符串比字符数组多了一个 '\0'

    // '\0' 用来结束字符串

    char str2[] = {'i', 'p', 'h', 'o', 'n', 'e'};

    char str3[] = "iphone"//字符串

    // 打印数据类型或者变量的 所占字节数的函数

    // sizeof()

    // %lu  无符号的长整型

    // unsigned long number = sizeof(str2);

    printf("\n%lu",sizeof(str2));

    printf("\n%lu",sizeof(str3));

    

    // 计算字符串长度

    // strlen(要计算的字符串);

    char str4[] = "I Love LanOu";

    // 打印 有效 长度

    // 从第一个字符开始,如果不是'\0',长度 + 1 ,遇到'\0'结束 并且输出的长度不包含'\0'

    printf("\n%lu",strlen(str4));

    

    // 字符串的拷贝

    // 拷贝: 从第一个字符开始拷贝 遇到'\0'拷贝结束

    // 注意: 目标字符串的长度最好大于源字符串

    char str5[20] = {0};   // 目标字符串

    char str6[] = "I Love LanOu";    // 源字符串

   //  strcpy( 目标字符串 , 源字符串 );

    strcpy(str5, str6);

    // 打印字符串  %s   一个字符一个字符的输出,如果遇到'\0',就结束

    printf("\n%s\n", str5);

    

    

    // 字符串拼接

    // 注意: 被拼接的字符串长度一定要够接收拼接完的字符串长度

    char str7[20] = "da jun ";

    char str8[] = "Love ";

    // 把后面的str8 拼接到 str7 的后面

    strcat(str7, str8);

    printf("%s\n",str7);

    

    // 字符串比较

    // 从第一个字符开始比较 如果一样,继续看第二个字符,如果不一样,开始进行比较,比较的内容是该字符在ASCII表中对应的数 前面的减去后面的,得到一个返回值 返回值是正数 则前面大 反之后面大.然后比较结束 如果返回值是0 ,那么两个字符串相同

    char str9[] = "I Love You";

    char str10[]= "I Miss You";

    // 接收比较的结果

    int number = strcmp(str9, str10);

    printf("%d ",number);

    

    

  

    

    

    // 查找字符串中的空格数例如:“I love iOS, i want an iPhone5s”

    

    char st[] = "I love iOS, i want an iPhone5s";

    // 声明一个变量 计算空格数

    int count = 0;

    for (int i = 0; i < strlen(st); i++) {

        // 判断字符是不是空格,如果是空格,就自增

        if (st[i] == ' ') {

            count++;

        }

    }

    printf("\n空格数:%d",count);

    

    printf("\n");

    

    // 将字符串倒转: 例如:“afjnpue” 转变成字符串“eupnjfa”

    

    //声明字符串

    char strValue[] = "afjnpue";

    //倒转只需要倒转长度的一半次数

    for (int i = 0; i < strlen(strValue)  /2 ; i++) {

        char temp = strValue[i];

        strValue[i] = strValue[strlen(strValue) - i -1];

        strValue[strlen(strValue) - i - 1] = temp;

    }

    for (int i = 0; i < strlen(strValue); i++) {

         printf("%c",strValue[i]);

    }

    

    

    

    

    return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值