返回
Featured image of post 《深入浅出程序设计竞赛》读书笔记

《深入浅出程序设计竞赛》读书笔记

简介

《深入浅出程序设计竞赛》是洛谷站长出的书,帮助青少年上手C++算法竞赛。书中对学习算法竞赛的顺序编排非常好,很系统,很适合用于算法竞赛入门。文章最后有书籍pdf版。


下面是我从基础语言入门部分(第一部分)总结出来的精华笔记。

文件操作

在文件里创建 title.in文件

freeopen("title.in","w",stdin);

freeopen("title.out","r",stdout);

头文件

cstdio头文件
//输入
scanf("%d",&a)
//输出
printf(%d,a);
cmath头文件:

包含一系列数学函数

根号sqrt, 几次方pow
algorithm头文件:

一系列算法函数

min, max, sort, swap
cstring头文件:

用于char字符串

strlen获取字符串长度strcpy复制字符串内容
fgets读入字符串sscanf获取字符串sprintf输

杂货

ASCII码:

‘A’=66, ‘a’=97

强制转换:
(int)a
函数:
stat(int a) //在这个函数里面对放入的a进行修改,函数外是不会生效的。
    
stat(int &a) //相当于给放入的变量取了个别名,对其修改,该变量也会改变。
    
stat(int a[]) //相当于传入&a[]

scanf("%d",&n) //这也是一样,相当于把n的地址告诉函数,这样才能输入到n中。
左移/右移运算符
//左移运算符
i<<n = i*2^n^
//右移运算符
i>>n=i/2^n^
随机数
#include <cstdlib>
#include <ctime>
srand(time(0))
ans=rand()%a	//生成0到(a-1)随机数
//ans=rand()%(b-a+1)+a	生成a到b随机数
异或运算符: ^

一个成立一个不成立

true^false=true
true^true=false

字符串

char字符串

结束标记字符:’\0’

读入字符串方法:

scanf("%s",s);
cin>>s;

这两种方法只能读到空格或者换行就会终止

如果要输入包括空格或换行的字符串,并存入一个字符串中,就用下面这种方法

	while (1) {
		s = getchar();//读入字符
		if (s == EOF) break;
        //...
		putchar(s);
	}

结束输入的时候,要使用组合键Ctrl+Z,然后回车。

这是因为getchar返回EOF(End of file)代表文件读入完毕。

windows下输入Ctrl+z / Linux下输入Ctrl+D 来输入EOF标记

string字符串

加强版字符串,可以赋值、拼接

字符串string需要使用头文件 string,包括下面的常用方法

//定义字符串变量s
string s;
//拼接字符串1
s+=str;
//拼接字符串2
s.append(str);
//比较字符串 s 的字典序是否在字符 str 的字典序之前
s<str;
//获取长度1
s.size();
//获取长度2
s.length( );
//截取字符串s,从第 pos 个位置开始len 个字符
s.substr(pos,len);
//在字符串s的第 pos 个字符之前插字符串 st
s.insert(pos,str);
//在字符串 s 中从第 pos 个字符开始寻找 str,并返回位置,如果找不到返回-1。pos 可以省略,默认值是 0。
s.find(str,[pos]);
//可以获取带空格字符串
getline(cin,s);

深入浅出程序设计竞赛.zip 蓝奏云

Licensed under CC BY-NC-SA 4.0