- #include
编译预处理指令之一
Using namespce std; 使用命名空间std
每个C++程序有且只有一个主函数
- 单行注释// 多行注释
- 数据类型
基本类型:整型:(短整型 short int 2)(整型 int 4)(长整型 long int 4)
字符型char 1
实型:(单精度型 float 4)(双精度型 double 8)(长双精度型 long double 8)
其他类型:(布尔型 bool)(枚举类型 enum)(数组类型)(结构体类型 struct)(共用体类型 union)(类类型 class)(指针类型)(引用类型)(空类型 void)
Tip!!
void用于两种情况:1.函数无返回值或参数2.定义指针时指针的目标类型不确定
- 字符型常量 两个单撇号 字符串型常量 两个双撇号
- 整型常量: 十进制 第一个不为0
八进制 第一个必为0
十六进制 0x(0X)开头
在后面加L(l)指定为long类型,U(u)为unsigned类型,但是与数值之间不能有空格!
- 实型常量:(浮点数) 格式:<数符>数字E指数 E2代表10的平方
在内存中以规范化指数形式存储
(数字部分必须小于1,小数点后第一个数必须非0)
- 字符常量: 都只占1B 内存中存放二进制代码(ASII码)
普通字符:单撇号 包含一个字符 ‘10’错误!!
转义字符: n 换行 10
空字符 0
ddd 1~3位八进制数
xhh 1~2位十六进制数
字符串常量: “” 空字符串
系统自动在字符串结尾处添加一个空字符’ ’,标志一 个字符串的终结 ,导致长度多1B
符号常量: #define 预处理宏替换指令
格式:#define 符号常量标识符 常量值
常变量: const 数据类型 常变量标识符=常量值;
必须在定义的时候赋值
- 变量: 如果没有赋初值的情况下:
局部变量 初值不确定
全局变量 初值0
- 标识符 只由字母,数字,下画线组成 必须字母或下画线开头!!!
- 关键字(不能作为标识符)
asm auto bool break case catch char class const const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_r while
- 赋值运算符有返回值
/ 结果取整 % 操作数,结果为整型
i++后置 先引用,自身+1
++i前置 先+1, 后引用
- 逻辑运算符:
!非 > && 与 > || 或
13. 在比较两个实数(浮点数,双精度数)相等时,看差值的绝对值大于或小于给定的小数值
14. 逗号(优先级最低)表达式的结果是最右边表达式的值
如:a=3,b=9 的值为9
15. sizeof()不是函数,是一种单目运算符。
不要把||和|、&&和&混淆了 new和delete也是运算符
补充:(重要)
&
(1)按位运算符; (2)逻辑运算符
作为逻辑运算符时,&左右两端条件式有一个为假就会不成立,但是两端都会运行,比如(1+2)=4 &(1+2)=3;1+2=4即使为假也会去判断1+2=3是否成立。
&&——逻辑运算符
&&也叫做短路运算符,因为只要左端条件式为假直接不成立,不会去判断右端条件式。
相同点:只要有一端为假,则语句不成立
|和||都是表示“或”。区别是||只要满足第一个条件,后面的条件就不在判断,而|要对所有的条件都进行判断。
16. 数据类型转换:
(1)隐式转换(自动转换)边转换边计算
• 自动将字符型转换为整型
• 由低字节向高字节转换,非布尔值向布尔值转换
(short 2/char 1)-int 4-unsigned 4-long 4-unsigned long 4-double 8
float 4-double 8
例子:‘A’-10+5*2.0+20.8/4=65-10+10.0+5.2=65.0+5.2=70.2
(2)显式转换(强制转换) 转换后再次使用值不发生变化!!!
格式:(类型)表达式 或 类型(表达式)
• 计算原则:转换为当前表达式中字节数最高的类型进行运算,同
字节情况下有浮点数就转化为浮点数运算。
先计算,后赋值。
#include
using namespace std;
int print(int x,int y)
{
int z;
if(x { z=x; x=y; y=z; } cout< } int main() { int a,b,m; cin>>a>>b; print(a,b); return 0; } //判断输入的浮点数是否为0 #include #include using namespace std; int main() { float f_tast; cin>>f_tast; if(fabs(f_tast)<=1e-6) { cout<<"输入的数据约等于0"; } if(fabs(f_tast)>1e-6) { cout<<"输入的数据大于0"; } return 1; }//判断闰年 1.能被4整除,不能被100整除 2.能被400整除 //(year%4==0&&year%100!=0)||year%400==0 个人解法: #include using namespace std; int main() { cout<<"请输入年份:"< int year,day; cin>>year; if((year%4==0&&year%100!=0)||year%400==0) { day=31+29+31+30+4; cout< } else { day=31+28+31+30+4; cout< } return 0; } 教材解法: #include using namespace std; int main() { cout<<"请输入年份:"< int year,day; cin>>year; day=31+28+31+30+31+4;//计算非闰年的天数 if((year%4==0&&year%100!=0)||year%400==0) //判断闰年 { day++; } cout< return 0; } //例题 #include using namespace std; int main() { double a=3.3,b=1.1; int i=a/b; cout<
return 0; } i=2?浮点数(double是64位的)乘法和除法有精度损失,答案可能是 2.99999,被取整了 double a=3.3d,b=1.1d;不然会被强制转换 //例题(实现个位,十位,百位输出) #include using namespace std; int main() { int splitInt; cout<<"输入一个3位正整数"; cin>>splitInt; int one; int ten; int hundred; hundred=splitInt/100; ten=splitInt%100/10; one=splitInt%10; cout<<"个位:"< return 0; } //例题!!!易错 #include using namespace std; int main() { int a,b; cout<<"input a,b:"; cin>>a>>b; cout<<"a="<
cout<<"(a++)+b="<<(a++)+b<<"n"; //1+2 cout<<"a+++b="<此时a的值改变了 2+2 return 0; } //假如两个正整数都不是很大,(例如都不超过1000),不引进第三个变量,如何交换两个整数变量的值? #include using namespace std; int main() { int a,b; cin>>a>>b; a=a+b; b=a-b; a=a-b; return 0; } int a,b; //从键盘上输入一个整型的数,让它与一个浮点型数比较大小,并输出其中较大那个数 #include using namespace std; int main() { int a; float b; cin>>a>>b; if(a>b)cout<
else cout<
return 0; }
a=10; b=15; 标准算法
int t;
t=a; a=b; b=t;



