文件输入输出
#inlucde<bits/stdc++.h>
freopen("hello.in","r",stdin);
freopen("hello.out","w",stdout);
fclose(stdin);
fclose(stdout);
头文件
#include < bits/stdc++.h > 万能头文件
#include < iostream > cin cout的头文件 基本输入流
#include < cstdio >scanf printf的头文件 定义输入/输出函数
#include < cmath > 调用数学函数
#include < cstring > #include < string >调用字符数组和字符串函数
#include < algorithm > 调用标准算法库
#include < iomanip > setiosflags( )和setprecision( )头文件
变量和基本类型
整型常量:
十进制形式:99、-1
八进制形式:以 0 开头,由 0~7 构成
十六进制形式:以 0x 开头,由 0 ~ 9,A ~ F 构成
实型常量:3.1、6.1E+2
字符常量:’ k ’ 、’ 5 ’ 、’ % ’
全局变量
定义在所有函数之外,初始值为0
定义在全局,运行速度比局部快
局部变量
定义在函数内的变量,初始值为随机数
全局变量和局部变量重名,以局部变量为准
数据类型
| 类型 | 类型 | 存储范围 |
|---|---|---|
| 整数类型 | int long long |
−
2
31
-2^{31}
−231 ~
2
31
−
1
2^{31}-1
231−1
~
/
~
1e9
~
/
~
1
0
9
10^{9}
109 − 2 63 -2^{63} −263 ~ 2 63 − 1 2^{63}-1 263−1 ~ / ~ 1e18 ~ / ~ 1 0 18 10^{18} 1018 |
| 浮点数类型 | float double | 小数点后6~7位 小数点后15~16位 |
| 字符类型 | char | 一个字符 |
| 逻辑值 | bool | true或者false |
整数类型存储范围正数-1 包含整数0
typedef long long ll; 将long long进行重命名
0转化为false 1或非0转化为true
类型转换(小→大)
char→int→long long→double
1.0*int=double
强制数据类型转换:(数据类型)(变量)
输入输出
scanf和printf
# 只用于基本数据类型 int、long long、float、double、char
| 输入类型 | 符号 | 输出类型 | 符号 |
|---|---|---|---|
| int | %d | int | %d |
| long long | %lld | long long | %lld |
| float | %f | float | %f |
| double | %lf | double | %f |
| char | %c | char | %c |
| char[ ] | %s | char[ ] | %s |
# char[ ]输入不用地址符
特殊输出格式
| 格式控制符 | 类型 | 功能 |
|---|---|---|
| %xd | int | 右对齐x位输出,不足空格补齐 |
| %0xd | int | 右对齐x位输出,不足0补齐 |
| %-xd | int | 左对齐x位输出,不足空格补齐 |
| %-0xd | int | 左对齐x位输出,不足0补齐 |
| %.xf | 浮点数 | 输出 x 位小数 |
| setprecision( x ) | 浮点数 | 输出 x 位数字 |
| fixed+setprecision( x ) | 浮点数 | 输出 x 位小数 |
进制
十进制转二进制
除二取余,逆序排位
int n,i=0;
cin>>n;
do{
a[i]=n%2;
n/=2;
i++
}while(n>0);
for(int j=i-1;j>=0;j--){
cout<<a[j];
}
二进制转十进制
数值乘以2的幂次依次相加
int n;
int a=1,sum=0;
cin>>n;
while(n>0){
int x=n%10;
int y=x*a;
sum+=y;
n/=10;
a*=2;
}
cout<<sum;
表达式
算术运算符
加法运算符 +
减法运算符 -
乘法运算符 *
除法运算符 / ~~~~~~~~~~~ # 有一个浮点数则保留小数部分,否则舍去
模(取余)运算符 % ~~~~ # 两个数必须是整数
关系运算符
| 关系 | 符号 |
|---|---|
| 大于 | ~~ > ~~ |
| 小于 | ~~ < ~~ |
| 大于等于 | ~~ >= ~~ |
| 小于等于 | ~~ <= ~~ |
| 等于 | ~~ == ~~ |
| 不等于 | ~~ != ~~ |
逻辑运算符
逻辑与 (&&):两个条件是否同时成立
逻辑或 (
~
||
~
):两个条件是否至少有一个成立
逻辑异或(
~
^
~
)
~
:两个条件刚好一个成立,另一个不成立
逻辑非 (
~
!
~
)
~
:将一个条件取反
条件运算符
(表达式1) ? (表达式2) : (表达式3)
先执行表达式1,如果为真,那么返回表达式2的值,否则返回表达式3的值
复合赋值运算符
| a+=b a=a+b | a-=b a=a-b | a*=b a=*b | a/=b a=a/b | a%=b a=a%b |
目运算符
单目运算符
! , ^
双目运算符
&& , ||
三目运算符
? :
语句
条件语句
单分支
if语句
if(表达式){
语句组
}
双分支
if-else语句
if(表达式){
语句组1
}else{
语句组2
}
条件运算符
(表达式1)?(表达式2) :(表达式3)
多分支
级联if-else if语句
if( 表达式1){
语句组1
}else if(表达式2){
语句组2
}else{
语句组3
}
switch语句
switch(表达式){
case 常量表达式1:
代码段1
break;
case 常量表达式2:
代码段2
break;
default:
代码段3
break;
}
循环语句
for循环
~~~~~ # 知道循环次数
for(初始值;循环条件;条件改变){
循环体
}
while循环
while(循环条件){
循环体
}
do-while循环
~~~~~ # 至少循环一次
do{
循环体
}while(循环条件);
嵌套循环
死循环
~~~~~ # 搭配break使用
for( ; ; )
while( 1 )
结束循环
continue 结束本轮循环
break 结束本层循环
函数
三要素:功能,参数,返回值
返回类型:int、long long、float、double、char、void、inline
参数传递:单项值传递、引用传递(改变实参) # (数据类型& 变量)
返回类型 函数名( 形式参数表) {
函数体
return 0; #void 时 return ; 或省略
{
数学函数
| 符号 | 功能 | 类型 |
|---|---|---|
| max | 求最大值 | |
| min | 求最小值 | |
| pow | a b a^{b} ab | double |
| abs | 求绝对值 | int |
| fabs | 求绝对值 | float / double |
| sqrt | x \sqrt{x} x | double |
| round | 四舍五入取整 | double |
| ceil | 向上取整 | double |
| floor | 向下取整 | double |
数组
数组初始化函数
memset函数
memset(数组名,要填充数值,sizeof(数组名))
int 类型的数组只能填充0,-1
bool 类型的数组只能填充0,1
一维数组
用来存储一类同类型数据
数组下标从 0 开始,for循环全部遍历不取等
const将变量转化成常量
数据范围 ~~ 变量 ~~ [ 大小 ] ;
二维数组
由同类型一维数组数据组成
先行后列 ~ [ 行 ] ~~ [ 列 ]
行和列的下标都是从 0 开始
遍历从0开始不取等,从1开始取等号
字符数组
有结束符
~~
’ /0 '
# 存储数量=字符数组大小 - 2
char a[6]="hello";
a[0]='h';1
a[1]='e';2
a[2]='l';3
a[3]='l';4
a[4]='0';5
a[5]='/0'6
字符数组比较大小
两个字符数组左对齐,从左到右比较ASCII码
fgets
可以存储空格
fgets ( 变量,存储数量,读取地(stdin) )
字符数组函数
| 格式 | 功能 |
|---|---|
| strcat(a,b) | 将b接到a后面,返回a的值 |
| strncat(a,b,长度n) | 将b前n个字符接到a后面,返回a的值 |
| strcpy(a,b) | 用b内容覆盖a内容,返回新a的值 |
| strncpy(a,b,长度n) | 将b前n个字符覆盖到a,返回新a的值 |
| strcmp(a,b) | 比较a和b的大小,比较结果: 如果a > b,返回一个正整数 如果a = b,返回0 如果a < b,返回一个负整数 |
| strncmp(a,b,n) | 比较a和b的前n个字符,比较结构: 如果a > b,返回一个正整数 如果a = b,返回0 如果a < b,返回一个负整数 |
| strlen() | 计算字符数组的长度,结束符’/0 ‘不算在长度之内 |
结构体
是由一组同从属的数据组成
在一个结构中声明不同的数据类型
相同结构的结构体变量是可以相互赋值
# 结构体类型名不能和结构体变量名重名
struct 结构体类型名{
成员表;
}变量名/变量数组;
结构体数组
struct xxx{
xxx;
xxx;
xxx;
}a[110];
struct node{
xxx;
xxx;
xxx;
};
node a[110];
遍历
struct xxx{
aaa;
bbb;
ccc;
}a[110];
int main(){
for(int i=1;i<=m;i++){
cin>>a[i].aaa>>a[i].bbb>>a[i].ccc;
}
return 0;
}
566

被折叠的 条评论
为什么被折叠?



