day81.一维数组的创建和使用完全初始化数据会依次放⼊数组 int arr[5] {1,2,3,4,5}; 不完全初始化 int arr2[6] {1}; 第⼀个元素初始化为1剩余的元素默认初始化为0 错误的初始化 - 初始化项太多 int arr3[3] {1, 2, 3, 4}; 同时数组可以进行省略 int arr[] {1,2,3,4,5}; 也是5元素 int arr[] {0};是1元素下标引用注意如果产⽣的下标超出了有效下标的范围⽐如使⽤负数作为下标或者超出了下标 的最⼤值再使⽤这个下标访问元素就会造成越界访问。越界访问访问的时候代码编译 时语法没报错但是运⾏时⼀定会出问题的。sizeof2.范围for语法输出1 2 3 4 5 6 7 8 9 10如果让循环里面e-1 不会改动arr 因为e是单独的变量auto关键字auto 的主要⽤途是让编译器⾃动推导出变量的类型的3.memset 设置数组内容可以使用2进行修改位置的变换当把每个数都变成1的时候 会把每个字节都变成14.memcpy拷贝数组内容直接拷贝的是地址--------%的打印%%可以打印出来%开关灯冒泡排序day91.二维数组arr1是{{1,2,0,0,0},{0,0,0,0,0},{0,0,0,0,0}}下标二维数组的遍历和打印使用memset 设置二维数组内容例题杨辉三角矩形转置图像模糊处理彩票摇奖2.字符数组在char arr[5]abcdf是不对的 因为有\0 所以应该是[6]\0的作用字符串长度-strlenstrlen会遇见\0才终止 所以如果测量char arr[2]{a,s};会一直测量下去 直到遇见\0 也许strlen会输出500多但是sizeof会加上\0的 只不过sizeof测量的是字节数量3.输入没有空格字符串cin和scanf进行读取字符串的时候 会在最后自动加上\04.输入有空格的字符串当有空格时候会这样5.gets 和 fgetssizeof(arr)最多读取的数量stdin从键盘里面进行读取6.scanf和getchar7.字符数组的输出8.strcpy 和 strcat--------islower 和 tolower需要的头文件是cctype例题自动校正或者统计数字字符个数--------isdigit输出亲朋字符\0的ascii值为0因为\0的ascii的值位0 所以可以进行省略 不用str[i1]!\0验证字串strstr找第一个只出现一次的字符.在nums[str[i]]的计算中str[i]当为c的时候 因为nums进行的是运算 所以传入的是nums[99]1所以位于99位置的这个数字变成了19.stringstring可以直接进行赋值string字符串的输入(getline)cin输入不带空格的字符串带空格的话会在空格的地方终止getline-头文件的是stringsize()函数前⾯我们学到的像 char 、 int 、 double 等内置类型的数据在操作的时候不会使 ⽤ . 操作符的。 string 是 C提供的⼀种更加复杂的封装类型在 string 类型的变量中加⼊了操作这 个字符串的各种⽅法函数, ⽐如求字符串⻓度、字符串末尾插⼊⼀个字符等操作。所以要 对 string 类型的变量进⾏各种操作就可以使⽤ . 操作符来使⽤这些函数。10.string的迭代器(iterator)迭代器是⼀种对象它可以⽤来遍历容器⽐如我们现在学习的 string 中的元素迭代器的作⽤ 类似于指针或者数组下标。 ❗ 不过访问迭代器指向的值需要解引⽤(*)。 C 中的 string 提供了多种迭代器⽤于遍历和操作字符串中的内容。begin()end()和正倒序遍历begin() 返回指向字符串第⼀个字符的迭代器需要⼀个迭代器的变量来接收。 end() 返回指向字符串最后⼀个字符的下⼀个位置的迭代器该位置不属于字符串。 string 中 begin() 和 end() 返回的迭代器的类型是 string::iterator 。 迭代器是可以进⾏⼤⼩⽐较也可以进⾏ 或者 - 整数运算的。 ⽐如it 就是让迭代器前进⼀步 it-- 就是让迭代器退后⼀步。 同⼀个容器的两个迭代器也可以相减相减结果的绝对值是两个迭代器中间元素的个 数。正序遍历逆序遍历通过迭代器找到元素后改变迭代器指向的元素是可以直接改变字符串内容的。push_back()push_back() ⽤于在字符串尾部插⼀个字符。字符串的和运算push_back() 是⽤于在字符串后添加⼀个字符然⽽部分情况下我们需要向原有的字符串后继续添 加字符串。 其实 string 类型的字符串是⽀持 和 运算的。这⾥的本质是 string 中重载了 operator 这个操作符。pop_back()但是当字符串中没有字符的时候再调⽤ pop_back() 时程序会出现异常。这种⾏为也是未定义 ⾏为要避免这么使⽤。insert如果我们需要在字符串中间的某个位置插⼊⼀个字符串这时候我们得掌握⼀个函数就是 insertfind()在字符串中查找字符或者字符串时有可能查找不到这时候 find 函数会返回 npos 这个值该数 字并不是⼀个随机的数字⽽是 string 中定义的⼀个静态常量 npos 。我们通常会判断 find 函 数的返回值是否等于 npos 来判断查找是否成功。substr()string的关系运算和string相关的函数(NULL的本质是0)stoi/stolstoi 是将字符串转换成 int 类型的值 stol 是将字符串转换成 long int 类型的值 这两个函数⾮常类型这⾥以 stoi 为例讲解⼀下这⾥函数的使⽤⽅式。 stoi 函数其实可以将⼀个 string 类型的字符串转化为整型函数原型如下int stoi (const string str, size_t* idx 0, int base 10); long stol (const string str, size_t* idx 0, int base 10); str 表⽰被转换的 string 类型的字符串 idx 是⼀个输出型参数也就是这个通过这个参数会带回⼀个值。 idx 是⼀个指针需要在外 边创建⼀个 size_t 类型的值传递它的地址给 idx 这个参数将会带回 str 中⽆法正确匹配 数字的第⼀个字符的位置。例如123qw会返回q的位置3 base 表⽰被解析的字符串中数字的进制值可能是 2 , 8 , 10 , 16 或者 0 . 默认情况下这个值是 10 表⽰ 10 进制数字 如果传递的是 2 表⽰被解析的字符串中是 2 进制的数字最终会转换成 10 进制 如果传递的是 8 表⽰被解析的字符串中是 8 进制的数字最终会转换成 10 进制 如果传递的是 16 表⽰被解析的字符串中是 16 进制的数字最终会转换成 10 进制 如果传递的是 0 会根据字符串的内容的信息⾃动推导进制⽐如字符串中有 0x 就认为 是 16 进制 0 开头会被认为是 8 进制最终会转换成 10 进制。16进制是0123456789abcdefstod/stofto_string输出pi is 3.141590例题标题统计--------isspace使用范围for进行遍历 cin遇见空格会自己终止 当cin在循环中读不到单词的 时候会停止下来石头剪刀布day10ASCII表单词的长度单词翻转reverse 判断是否为回文手机口算练习题