函数

round(double x):四舍五入,返回double型

memcpy()数组复制函数

如果要从数组a复制k个元素到数组b,可以这样做:memcpy(b,a,sizeof(int)k)。当然,如果数组a和b都是浮点型的,复制时要写成“memcpy(b,a,sizeof(double)k)”。另外需要注意的是,使用memcpy函数要包含头文件string.h。如果需要把数组a全部复制到数组b中,可以写得简单一些:memcpy(b,a,sizeof(a))。

memset()__初始化数组

memset**是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值,例如:memset(a, 0, sizeof(a));

sprintf()、sscanf()

//sscanf()支持正则表达式//sprintf的作用是将一个格式化的字符串输出到一个目的字符串中,而printf是将一个格式化的字符串输出到屏幕。sprintf的第一个参数应该是目的字符串,因为C语言在进行字符串操作时不检查字符串的空间是否够大,所以可能会出现数组越界而导致程序崩溃的问题。
char str[80];
sprintf(str, "Pi 的值 = %f", M_PI);
puts(str);
//输出Pi 的值 = 3.141593

输入输出重定向

FILE * freopen ( const char * filename, const char * mode, FILE * stream );filename: 要打开的文件名mode: 文件打开的模式,和fopen中的模式(r/w)相同stream: 文件指针,通常使用标准流文件(stdin/stdout/stderr)返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL。(一般可以不使用它的返回值) 功能:实现重定向,把预定义的标准流文件定向到由path指定的文件中。标准流文件具体是指stdin、stdout和stderr。其中stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认。通过调用freopen,就可以修改标准流文件的默认值,实现重定向。freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取freopen("out.txt","w",stdout); //输出重定向,输出数据将保存在out.txt文件中

字符数字转int

s[i] - '0'//减去‘0’即可

struct

//struct类比class.只是与类的区别在于默认访问权限为public,C++ 中关键字struct和class都是用来定义类的,二者除了默认访问限定符不同,其他所有方面都一样。
struct A{};
struct A{}a,b;
//以上第一种只是定义了一个类型为A的结构体名称.第二种同时也定义了结构体变量a,b.(类似定义类A的变量)
struct {}a,b;
//缺省结构体,这样定义不能再定义其他类型的结构体typedef struct node
{int data;   //用于存放数据struct node  *next;    //这个就是连接部,用于寻找下一个结点
}Node,*Pnode; //如果我没理解错的话,*Pnode就是Node *的别名,专门用来创建指针,不用再多打一个*号;//可以定义自己的指针变量,但不能在内部定义自己,因这样会循环定义

随机排序(vector)

//srand()函数是随机数发生器,设置种子,如果种子没有发生变化,则每次生成的随机数都是一样的
//通常可以利用系统时间来改变系统的种子值,即srand(time(NULL))或srand(time(0))
//time(0)的返回的是从1970 UTC Jan 1 00:00到当前时刻的 秒数 ,为unsigned int类型。故rand()运行间隔要大于一秒
srand((unsigned int)time(0));
//随机排序,shuffle为洗牌的意思
random_shuffle(vec.begin(),vec.end());//rand()
//RAND_MAX 是 <stdlib.h> 中伪随机数生成函数 rand 所能返回的最大数值。
//这意味着,任何一次对 rand()的调用,都将得到一个 0~RAND_MAX 之间的伪随机数。
//若想返回0-1,则(double)rand()/RAND_MAX
rand()%10//返回[0-10)
rand()%100//返回[0-100)
rand()%1000//返回[0-1000)

一句话


没有用到循环条件中的变量就用while循环

标记的技巧,图形模拟题,对于图形重叠,可用标记

scanf函数有返回值?对,它返回的是成功输入的变量个数

C语言中没有对任意底数求对数的函数,必须使用换底公式, l o g a b = l o g e b l o g e a log_ab = \frac {log_eb} {log_ea} loga​b=loge​aloge​b​

printf不能输出string,要么printf与cout分开使用,要么使用c_str()函数(不推荐)

杂技


pragma warning(disable:****) //****为警告代码

size_t是标准C库中定义的,应为unsigned int,在64位系统中为 long unsigned int。

binary_search(

大家都知道,二分查找是在排序后的基础上来对其进行查找操作。所以在使用bianry_search的时候,需要将要查找的容器进行排序。排序的必须是从小到大
binary_search(a,a+N,1);//从a-a[N]中查找1

memset():建议只给数组赋0或-1

memset是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作。
void *memset(void *s, int ch, size_t n);
函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法0的补码全为0,-1的补码全为1,如果对数组赋其他值,则用fill函数

为啥开辟数组int a[1000000](大数组)放到main函数之前

全局变量在静态存储区分配内存,局部变量是在栈上分配内存空间的,这么大的数组放到栈上不溢出吗?
VC堆栈默认是1M,int a[1000000]的大小是4*1000000,将近4M,远远大于1M,编译连接的时候不会有问题,但运行是堆栈溢出,程序异常终止。如果你真的需要在堆栈上使用这么大的数组,那么可以在工程选项链接属性里设置合适的堆栈大小。全局变量在静态存储区分配内存,局部变量是在栈上分配内存空间的。(c语言程序在运行时会动态创建一个堆栈段,里面存放着调用栈,保存着函数的调用关系和局部变量。)如果数组太大,可能会造成栈溢出。如果数组大小较大(大概10^6级别),则需要将其定义在主函数外面,否则会使程序异常退出,原因是函数内部申请的局部变量来自系统栈,允许申请的空间较小;而函数外部申请的全局变量来自静态存储区,允许申请的空间较大。例如下面的代码就把10^5大小的数组定义在了系统栈(也叫核心栈、内核栈)是内存中属于操作系统 空间的一块区域,其主要用途为:(1)保存中断现场,对于嵌套中断,被中断程序的现场信息依次压入系统栈,中断返回时逆序弹出(2)保存操作系统子程序间相互调用的参数、返回值、返回点以及子程序(函数)的局部变量。
用户栈是用户进程空间中的一块区域,用于保存用户进程的子程序间相互调用的参数、返回值、返回点以及子程序(函数)的局部变量。

while(~scanf("%d %d",&a,&b)) = while(scanf("%d %d",&a,&b)!=EOF)

scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。
(EOF不是一个字符,它被定义为是int类型的一个负数-1。)~是按位取反操作符,-1补码:1111 按位取反后为0000

EOF

在C语言中,EOF值为-1,在终端中,ctrl+z输入EOF,再按回车确认。

while(cin>>a)

count()

count(A[i],A[i]+105,true);//count为C++标准库自带函数,返回给定的迭代器所指区间内所有等于指定值的元素个数

i&1:判断一个数的奇偶

偶数二进制表达的末尾一定是0,
奇数二进制表达的末尾一定是1;
若i为奇数,i&1为1.若i为偶数,i&1为0.

sort()

//sort(start,end,排序方法)  start:起始地址 end:终止地址(亦可传入迭代器起始终止)可以对 浮点数,整数,字符,字符串,结构体进行排序
sort(v.begin(),v.end(),cmp);//按照自定义函数cmp进行排序,cmp函数返回值为bool类型
sort(str.begin(), str.end());//默认从小到大排序
sort(str.begin(), str.end(),greater<char>());//通过greater(仿函数)指定从大到小排序bool compare(int a,int b){return a>b; //如果是从小到大,将">"变成“<”即可;
}核心代码:
bool compare(T   a,T  b)    // T 为数据类型,根据具体的要传入的数据来求确定{       if(   )  //先满足什么条件的先排序return  a>b; //按什么规则排序,此处按从大到小排序,else  if() //再排又满足什么条件的;return ......;
}

gets()、scanf()

gets来输入一行字符串(注意:gets识别换行符\n作为输入结束,因scanf完一个整
数后,如果要使用gets,需要先用getchar接收整数后的换行符),并将其存放于一维数组(或二维数组的一维)中;puts用来输出一行字符串,即将一维数组(或二维数组的一维)在界
面上输出,并紧跟一个换行。

指针减法

指针的引用

函数内联

函数调用在执行时,首先要在栈中为形参和局部变量分配存储空间,然后还要将实参的值复制给形参,接下来还要将函数的返回地址(该地址指明了函数执行结束后,程序应该回到哪里继续执行)放入栈中,最后才跳转到函数内部执行。这个过程是要耗费时间的。另外,函数执行 return 语句返回时,需要从栈中回收形参和局部变量占用的存储空间,然后从栈中取出返回地址,再跳转到该地址继续执行,这个过程也要耗费时间。内联函数和普通函数的区别在于:当编译器处理调用内联函数的语句时,不会将该语句编译成函数调用的指令,而是直接将整个函数体的代码插人调用语句处,就像整个函数体在调用处被重写了一遍一样。

CSP、CCSP刷题笔记相关推荐

  1. ccf csp认证刷题笔记202212

    此处用以记录一下自己在刷题时候的思路和使用的方法.本人算法小垃圾,所以基本上使用最原始的方法来完成这些题目. 202212-1: 题目: 絮絮叨叨的分析: 单看题目,简直不知道其在说什么.可能是我的语 ...

  2. Github最强算法刷题笔记.pdf

    资料一 昨晚逛GitHub,无意中看到一位大佬(https://github.com/halfrost)的算法刷题笔记,感觉发现了宝藏!有些小伙伴可能已经发现了,但咱这里还是忍不住安利一波,怕有些小伙 ...

  3. 我收藏的谷歌和阿里大佬的刷题笔记

    金三银四大家在准备校招.社招,或者闲暇的时候,都可以刷刷 Leetcode,保持良好的手感. 之前刷题,一直觉得漫无目的地刷,效率很低.后来发现了两个刷题笔记,谷歌大佬高畅和BAT大佬霜神写的 Lee ...

  4. 三级网络技术刷题笔记

    三级网络技术刷题笔记 RPR与FDDI一样使用双环结构 在RPR环中,源节点向目的节点成功发出的数据帧要由目的节点从环中收回 RPR中每个节点都执行SRP公平算法 RPR环能够在50ms内实现自愈 O ...

  5. 卷进大厂系列之LeetCode刷题笔记:二分查找(简单)

    LeetCode刷题笔记:二分查找(简单) 学算法,刷力扣,加油卷,进大厂! 题目描述 涉及算法 题目解答 学算法,刷力扣,加油卷,进大厂! 题目描述 力扣题目链接 给定一个 n 个元素有序的(升序) ...

  6. 发现一位大佬的算法刷题笔记PDF

    昨晚逛GitHub,无意中看到一位大佬(https://github.com/halfrost)的算法刷题笔记,感觉发现了宝藏!有些小伙伴可能已经发现了,但咱这里还是忍不住安利一波,怕有些小伙伴没有看 ...

  7. 阿里大神的刷题笔记.pdf

    今天在浏览 Github 的时候,发现了一个让人眼前一亮的项目,一本厚厚的算法刷题笔记,来自一位阿里的资深技术大神. 作者在大学期间参加过三年的 ACM 比赛,对算法有着较为透彻的了解,在找工作之前, ...

  8. 赞!Google 资深软件工程师 LeetCode 刷题笔记首次公开

    有人说写代码就像我们平时开车,仅凭经验你就可以将车开走:但当有一天,这辆车出问题跑不起来的时候,你不懂汽车的运行机制,你要怎么排除和解决问题?所以拥有扎实的数据结构和算法,才能开好编程这辆车. 作为程 ...

  9. 经典算法刷题笔记pdf

    昨晚逛GitHub,无意中看到一位大佬(https://github.com/halfrost)的算法刷题笔记,感觉发现了宝藏!有些小伙伴可能已经发现了,但咱这里还是忍不住安利一波,怕有些小伙伴没有看 ...

最新文章

  1. java对象转xml 高性能_通过实例学习JAVA对象转成XML输出
  2. 有关nginx location规则
  3. 阿里巴巴公布“云钉一体”战略:阿里云与钉钉全面融合
  4. ZeroC Ice启用SSL通讯的配置
  5. SAP UI5 初学者教程之十五 - 对话框和 Fragments 的使用方式试读版
  6. Kate and imperfection CodeForces - 1333F(思维+数学)
  7. C++笔记——.和::和:和-的区别
  8. java 蓝桥杯 基础练习 FJ的字符串
  9. 耳挂式蓝牙耳机原理_挂耳式蓝牙耳机如何佩戴
  10. MAC Eclipse 快捷键
  11. 谁说国产编译器没救了?这个 C/C++ 和 JavaScript 编译器来了 | 程序人生 2020
  12. 传智播客-刘意-java深入浅出精华版学习笔记Day10
  13. hp440g5拆机_HP 惠普 ProBook 440 G5 评测 | ZMMOO
  14. 关于成型滤波器实现方式的简单比较
  15. transform translateY(-50%) 实现元素垂直居中效果
  16. 用Unison实现数据的双向实时同步
  17. 24岁女孩与30多岁成熟有家男人的午夜对白
  18. 2019年马上结束了,当初立的flag如何了?
  19. 解决Bean with name ‘XX‘ has been injected into other beans 问题
  20. 这十一条程序员必备软技能,你一定要知道

热门文章

  1. Image Optimizer Pro - Compres‪s for Mac(简单易用的图像压缩器)
  2. c#获取ssl证书有效性_如何在c#中获取远程服务器的SSL证书信息
  3. 前端经验 - 收藏集 - 掘金
  4. jquery请求超时设置
  5. 基于SpringBoot的民宿预约管理系统【附源码】
  6. android usb设置波特率,USB开发中设置波特率
  7. (程序)MALTAB求解含未知数的矩阵逆
  8. [实践篇]13.21 la qcom watchdog学习笔记
  9. hdu1024-Max Sum Plus Plus
  10. 【JAVASE小新】关于静态方法的使用(含打印*长方形例子)