第一章 c++简单程序设计
1.1 c++初印象
1.1.1 c++程序示例
//2_1.cpp
#include
using namespace std;
int main (){
cout<<"hello!"<
创建源文件时c++为.cpp文件,c语言为.c文件
c++同c语言一样。main函数必须有,且只能有一个,表示了程序执行的开始点。
cout<<实现输出,endl 表示换行符
#include为预处理操作,c++中的iostream 类似于c语言中的stdio.h,包含了输入输出等信息
using namespace std 需在嵌入iostream后加上。是针对命名空间的指令。
1.1.2 字符集同c语言
程序一闪而过的时候,解决方式
1.不要按f5,按ctrl+f5
2.只需要添加一个getchar();即可实现从键盘接收一个字符。一个不行就两个
3.添加system("pause");
4.添加cin.get();
1.2 基本数据类型和表达式
1.2.1 基本数据类型
bool | ||
char | signed char | unsigned char |
short | unsigned short | |
int | unsigned int | |
long | unsigned long | |
float | ||
double | long double |
除了bool值以外,主要分为两大类,整数和浮点数。char从而本质上来说也是整数,他是长度为1个字节的整数,通常用来存放字符的ASCⅡ码。
signed表示有符号数,unsigned表示没有符号数,有符号整数在计算机内是以二进制补码存在的,"0"代表正,"1"代表负,无符号整数只能是正数,在计算机内以绝对值存放。
1.2.2 常量
1.整型常量:八进制整数和十六进制整数通常表示无符号整数,前不带正负号
整型常量后可加L表示长整型,U表示无符号型,也可同时加(不区分大小写)
2.实型常量:即实数,有两种表现形式,一般形式和指数形式。(默认为double型,可加后缀f)
指数形式:例如用0.34E+2表示0.34×10² ,整数部分和小数部分可省其一
3.字符常量:字符常量是单引号括起来的一个字符,另外有一些不可表示字符
\a | 响铃(真好玩) | \r | 回车 |
\n | 换行 | \v | 换页 |
\t | 水平制表符 | \\ | 字符“\” |
\v | 垂直制表符 | \" | 双引号 |
\b | 退格 | \' | 单引号 |
4.字符串常量:简称字符串,由双引号括起来的字符序列
字符串中间的双引号要用转义序列表示,字符串末尾有\0,而字符没有
5.布尔常量:只有两个:false和true
1.2.3 变量
储存方式:(不咋懂,不知道刷题用不用得到)
auto:堆栈方式暂时储存,可被若干变量多次覆盖使用
register:存放在通用寄存器中
extern:所有函数和程序段都可引用
static:固定地址存放,整个程序运行期间都有效
1.2.4 符号常量
使用前需声明同时赋初值
1.const 数据类型说明符 常量名 =常量值;
例如:const float PI =3.1415926;
2.const可以创建const数组,const指针和指向const的指针
const可以保护数据,可对形式参数使用const
const int ar[] 即处理数组时将其视为常量
1.2.5 运算符与表达式
1.算术运算符与算术表达式
基本算术运算符:+ - * /(取整) %(取余)
++,--,变量自增自减
2. 赋值运算符与赋值表达式
=可与算术运算符或位运算符结合,结合顺序从右向左
3. 逗号运算和逗号表达式
表达式1,表达式2
先求1,再求2,最终结果为表达式2的值
a=3*5,a*4 最终结果为60
4. 逻辑运算与逻辑表达式
< <= > >=优先级高于 == !=
!&& ||
5. 条件运算符与条件表达式
条件运算符?是唯一的三元运算符
问号表达式,先求解表达式1,成立则求表达式2为最终结果,不成立求表达式3为结果
cout<<(grade>=60?"pause":"fail");
6. sizeof运算符
sizeof类型符,或sizeof表达式
7. 位运算(头一次发现还能这么玩,感觉很底层,有很多技巧)
按位与(&):二进制各位的&运算,有0则为0
对任意数&1,求得末位,可判断奇偶,0为偶,1为奇
按位或(|):二进制各位的|运算,有1则为1
对任意数|1,强制转换末位为1,强制末位为0,在此基础-1即可
按位异或(^):相同为0,不同为1
可进行简单加密,或者交换两数
按位取反(~):对应位置取反
可交换正负号,求绝对值
左移(<<):左边多出来的要舍弃,右边补0
右移(>>):右边多出来的要舍弃,左边补0
8.其他运算符
点运算符(.):成员访问运算符,获取类对象的一个成员
箭头运算符 (->) :ptr->m等于(*ptr).m
9. 运算符的优先级与结合性
[ ] ( ) 后置++ 后置-- . -> | ||
单目 | 前置++ 前置-- sizeof & * +(正号) -(负号) ~ ! | 右到左 |
强制转换 | 右到左 | |
普通 | * % \ + - | |
左移右移 | << >> | |
比较 | < > <= >= == != | |
位运算 | & | ^ | |
逻辑 | && || | |
问号 | ? : | 右到左 |
等号相关 | 右到左 | |
逗号 | , |
10.混合运算时的数据类型转换
1.隐含转换:自动转换,不丢精度
2.显性转换:(类型说明符)表达式 C语言
表达式(类型说明符) C++
static_cast <类型说明符> 表达式 可替换上面两个
const_cast <类型说明符> 表达式
reinterpret_cast <类型说明符> 表达式
1.3 数据的输入与输出
1.3.1 I/O流:数据在对象之间的流动,抽象为“流”。流在使用前要建立,使用后要删除。
从流中获取数据叫提取,向流中添加数据叫插入。
数据的输入与输出就是通过I/O流实现的。
1.3.2 插入符和提取符
cout<<表达式1<<表达式2...
例:int a,b;
cin>>a>>b;
1.3.3 简单的I/O格式控制:
dec |
十进制表示 |
hex | 十六进制表示 |
oct | 八进制表示 |
ws | 提取空白符 |
endl | 插入换行符,并刷新流 |
ends | 插入空字符 |
setsprecision | 设置浮点数的小数位数(包括小数点) |
setw | 设置域宽 |
例:输出浮点数3.1415并换行,设置域宽为5个字符,小数点后保留两位有效数字
cout< 1.4 算法的基本控制结构(顺序,选择,循环) 1.4.1 if条件句 形式:if (表达式) 语句1 else 语句2 判断闰年 把条件写成bool值,比较好看 1.42 多重选择结构 1.嵌套if语句 2.if...else if 语句 3.switch语句(判断同一表达式的值) switch(表达式) {case 常量表达式1:语句1 case 常量表达式2:语句2 ... case 常量表达式n: 语句n default:语句 n+1 } 一个简单的switch循环,见过这种做法做pta乙级第二题。 1.4.3 循环结构(可嵌套) 1. while 语句 2. do...while 语句 do 语句 while (表达式) 先执行语句,然后判断表达式的值 true继续,false结束(循环体需要包含改变表达式值的语句) 3. for 语句(最为灵活) 输入一个整数,求出所有因子,可以用for穷举到数的开方(交流群老哥提示优化) 2.5 自定义数据类型 2.5.1 typedef声明(提高可读性) typedef 已有类别名 新类型名表;(新类型命名表可以有多个标识符,之间以逗号分隔) 2.5.2 枚举类型enum(解决不合法数据) enum 枚举类型名 {变量值列表}; enum weekday {sun,mom,tue,wed,thu,fri,sat}; 说明:1. 枚举元素按常量处理,不能赋值 2. 枚举元素有默认值 依次为0,1,2,3... 3. 也可在声明中另行定义 enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat}; 定义sun为7,mon为1,以后顺序加1,sat=6 4. 枚举值可以进行关系运算 1.6 深度探索 完全看不进去
#include
#include
typedef double area volume;
typedef int natural;
natural i1,i2;
area a;
volume v;