本文介绍在参加蓝桥杯等算法竞赛时新手小白需要掌握的C/C知识很多新手小白不清楚需要学到什么程度希望本文对你们有帮助注不包含STL和类一、数据类型1.整形 (int)包括长整型(long,long long); 关于int在做题时主要考虑会不会溢出的问题。一般数据在10的9次方(2³¹−1)以内都适合。2.浮点型(float,double)分别对应单精度和双精度3.字符型(char)用于存放字符给char类型赋值时需要使用单引号4.空类型void不需要返回值的函数使用5.布尔型bool值为true/false,这里特别提醒bool常被忽略在竞赛中对于简化判断函数帮助很有用6.数组掌握遍历查找修改元素求数组长度即可7.结构体struct创建初始化访问结构体成员结构体数组构造函数与析构函数补充在竞赛中指针的使用不是必须的且用指针完成的题目完全可用其他替代所以不是必学项。二、操作符1.算术操作符(,-,*,/,%%只能用于整数2.赋值操作符,,-,*,/,%3.自增 / 自减操作符,--注意先加减再使用或是先使用再加减4.关系操作符,!,,,,注意区分和,新手经常忘记导致题目无法通过5.逻辑操作符,||,!利用这类操作符不要创建太复杂的表达式6.位操作符,^,~,,位操作符是蓝桥杯常考属于十分重要的操作符对优化算法有很大帮助应该掌握得十分熟练。但大部分同学对这部分刚好不了解或是不熟练。需要尤其重视且需要提前了解二进制八进制以及十六进制。7.三目操作符?可用于优化条件判断8.sizeof操作符求字节大小代码示例如下sizeof(int);// 4个字节sizeof(arr);//数组总字节sizeof(arr)/sizeof(arr[0])//数组长度9.类型转换操作符代码示例如下(int)3.14;// C 风格强转static_castint(3.14);// C 风格操作符优先级也要掌握三、C/C输入输出1.cin/cout大多数情况使用方便2.printf/scanf在要求控制输出格式的题目中使用注意占位符对应3.getchar()/putchar()读取/输出单个字符注不会忽略空白字符处理含空格字符串的函数之一4.fgets(first,len,stdin)/fputs(first,stdout)fputs用的不多fgets最多读长度-1个字符,会把回车\n一起读进数组,自动补\0,也是处理带空格字符串的一种方法四、条件判断与循环1.if else2.switch3.while4.for5.do-while6.break,continue这一章节的内容是重中之重我认为大家可以在这一章节花多一点时间这样后面的章节学习起来也会更轻松。不只是刷简单的语法题还有循环嵌套条件嵌套等五、函数自定义函数常见操作函数定义函数声明传值调用与传址调用函数重载(简单使用即可)函数递归建议大家做多相关题目对于后续算法学习有重要帮助常用函数1.sqrt()----cmath开平方函数2.pow(x,y)----cmath次方函数计算x的y次方并返回3.ceil()----cmath浮点数向上取整函数4.floor()----cmath浮点数向下取整函数5.memset(first,c,len)----cstring设置数组内容函数first为初始地址c为要设置的字符len为设置的长度可用于初始设置字符数组或修改字符数组内容注memset也可用于清零其他类型数组6.memcpy(first,source,len)----cstring拷贝数组内容函数first为目标数组初始地址source为源数据地址len为拷贝数据的字节个数注5与6函数的长度都是以字节为单位7.strcpy(s1,s2)----cstring拷贝字符数组专用函数将s2赋值给s1注专门用于拷贝字符数组且一次性完全复制而memcpy可拷贝任何类型且可指定长度8.strcat(first,second)----cstring字符串拼接函数将second地址的字符串拼接到first地址的字符串上注原字符串要预留足够空间防止越界9.isupper()/islower()----cctype判断大小写函数结果为真返回非零数为假返回’0’10.toupper()/tolower()----cctype转换大小写函数11.isdigit()----cctype判断数字字符函数结果为真返回非零数为假返回’0’12.strstr(first,second)----cstring查找子串函数找到子串 → 返回子串第一次出现的地址没找到 → 返回 NULL13.swap(a,b)----utility交换函数交换两个同类型变量的值14.max()/min()----algorithm最大最小值函数可放第三个参数cmp自定义比较标准15.sort(a,b,cmp)----algorithm排序函数cmp是比较标准支持自定义比较方式a是起始地址b是结束地址默认升序sort函数十分推荐大家掌握注bits/stdc.h是竞赛中常用的万能头文件比较方便。但是在工程开发中不能使用所以大家最好还是要记忆每一个库函数原来的头文件六、string作为C独有的放在一起总结头文件string基本操作1.初始化shaha2.字符串拼接s1s23.访问s[i]4.长度s.size()5.输入cins6.插入s.insert(first,str)first为要插入的下标位置str为要插入的字符串7.查找s.find()有三种形式s.find(‘字符’)s.find(“子串”)s.find(内容, 起始位置)代码示例如下string sababa;// 从下标 2 开始找字符 aintposs.find(a,2);// 结果4找到了返回第一次出现的下标没找到返回string::npos实际就是 -18.截取字串substr()有两种形式// 写法1从 pos 开始截取 len 个字符s.substr(pos,len);// 写法2从 pos 开始一直截取到字符串末尾s.substr(pos);9.特殊输入getline(cin,s)在string中处理带空格的字符串还有第二种形式getline(cin,s,c)最后一个位置为用户自定义的结束字符10.迭代器string::iterator it;s.begin() → 指向第一个字符s.end() → 指向最后一个字符的下一个位置常用于遍历代码示例如下string sabcd;// 定义迭代器从头遍历到尾for(string::iterator its.begin();it!s.end();it){cout*it ;}string相关函数1.stoi()/stol()stoi字符串转 intstol 字符串转 long2.stod()/stof()stod:字符串转doublestof:字符串转float3.数字转字符串to_string()4.字符反转reverse(first,last)补充范围for语法:for(单个元素类型 变量名:要遍历的数组名){// 循环体}可以结合auto关键字使用方便遍历数组intarr[]{1,2,3,4,5};// auto 自动推导为 intfor(autox:arr){coutx ;//自动打印数组全部元素}浮点数四舍五入1.round()优点正负数都支持2.强转0.5代码示例如下doublea3.14;doubleb3.67;intres1(int)(a0.5);// 3intres2(int)(b0.5);// 4需要了解的ASCII码0 48A 65 递增a 97 递增大小写差32总结以上是蓝桥杯竞赛入门必备的 C/C 基础知识点啦~ 作为第一次写博客的新手难免有疏漏请大家见谅。祝愿备战竞赛的小伙伴们夯实基础、顺利通关一起加油呀~