# 第一章:顺序结构 --- ## 基础一 --- ## 1.c++编程简介及所用编程软件 --- ### `1. c++简介` C++是在C语言的基础上开发的一种面向对象编程语言,应用非常广泛。 常用于系统开发,引擎开发等应用领域,支持类、封装、继承、多态等特性。 C++语言灵活,运算符的数据结构丰富、具有结构化控制语句、程序执行效率高, 而且同时具有高级语言与汇编语言的优点。 --- C++语言是对C语言的扩充,从Simula中吸取了类, 从ALGOL语言中吸取了运算符的一名多用、引用和在分程序中任何位置 均可说明变量,综合了Ada语言的类属和Clu语言的模块特点,形成了 抽象类,从Ada Clu和ML等语言吸取了异常处理,从BCPL语言中吸取 了用 `//` 表示注释C++语言保持了C语言的紧凑灵活、高效以及易于移植性 强等优点,它对数据抽象的支持主要在于类概念和机制,对面向对象风范的 支持主要通过虚拟机制函数因C++语言既有数据抽象和面向对象能力,运行性能高,加上C语言的普及,而从C语言到C++语言的过渡较为平滑,以及C++语言与C语言的兼容程度可使数量巨大的C语言程序能方便地在C++语言环境中复用,使C++语言在短短几年内能流行。 --- `2. 编程软件的使用:(IDE:DEV C++)` Dev-C++(或者叫做 Dev-Cpp)是 Windows 环境下的一个轻量级 C/C++ 集成开发环境(IDE)。它是一款自由软件,遵守GPL许可协议分发源代码。它集合了功能强大的源码编辑器、MingW64/TDM-GCC 编译器、GDB 调试器和 AStyle 格式整理器等众多自由软件,适合于在教学中供 C/C++语言初学者使用. ![](https://ss3.baidu.com/-fo3dSag_xI4khGko9WTAnF6hhy/zhidao/wh%3D450%2C600/sign=b23462972c2eb938ec3872f6e052a903/21a4462309f790527ef126480ff3d7ca7acbd5de.jpg) --- ### 2. 键盘位置 看一下你的键盘,和下面的图(少了最上面的一行)做一个对照。 ![](https://cdn.itbegin.com//pics/admin/2018/6/331ebef18a5046a0a7cc14ea0c8a6aa2.jpg) --- ### 3、特殊符号 在编程里面,经常会用到一些特殊符号,学编程首先要知道怎么输出这些特殊符号。 经常用到的特殊符号有(第几行根据上面的图): --- 符号|输入方式|用途 -|-|- shift|倒数第二行左右都有|输出大写字母,或键上边的特殊符号 blank|最下面的中间长条|空格 tab|第二行最左|制表符,平台上为2个空格 caps lock | 第三行最左|大小写切换,灯亮大写,灯灭小写 enter|第三行最右(右shift上面)|回车换行 '|enter左边第一个|单引号,两个表示字符,'a' --- 符号|输入方式|用途 -|-|- ;|enter左边第二个|分号,一个代码语句结束的符号 \#|shilf+3|第一行必须用到 <|shift + ,|小于号,连续两个作输出用,cout << (|shift + 9|小括号,函数后面要用到,main() {|shift + [(enter左上位置)|大括号,main() {} "|shift + '(enter左边)|双引号,两个表示字符串,"hello" --- ### 4、C++ 基本语法 第一个程序:hello world ```c++ #include
using namespace std; int main() { cout<<"hello world!"; return 0; } ``` --- ### [练习题] [ Hello,World!](http://39.99.183.126:8888/p/YBTJ1001) --- ## 基础二 ### 一、 cout输出 --- ### 1、中文输出 双引号""表示是字符串,可以直接使用中文。 要小心的是,单引号只能是英文字符",不能是中文字符“,如果用了中文的“就会报错。 --- ### 2、连续输出 如果要连续输出字符串和数值,例如:我的年龄是:11。 直接把字符串和数值连起来,用cout输出,这种方法是不行的。 ```c++ cout << "我的年龄是:"11; ``` --- 可以使用两个cout输出,或者用一个cout连续输出: ```c++ cout << "我的年龄是:"; cout << 11; cout << "我的年龄是:" << 11; ``` --- ### 3、 四则运算 学会cout输出以后,我们就可以使用cout输出四则运算的结果了。 ```c++ cout << 3+2; //结果是5 ``` `表达式`:3+2不是字符串,而是表达式,输出的是表达式的结果(数值)。 --- ### 4、换行符 endl 表示 换行符,用cout << endl就会实现换行。 ```c++ cout << endl; cout << endl; cout << endl; ``` 会输出三个空行。 --- ### 5、多行输出 利用cout的连续输出特性,在输出信息后再跟一个endl,就能实现多行输出。 ```c++ cout << "春眠不觉晓," << endl; cout << "处处蚊子咬。" << endl; ``` --- ### 练习题 [单句春晓](http://39.99.183.126:8888/p/P4) [唐诗春晓](http://39.99.183.126:8888/p/P7) [01子串](http://39.99.183.126:8888/p/P9) [字符三角形](http://39.99.183.126:8888/p/YBTJ1004) --- ### 二、整型变量 --- ### 1. 变量 **常量** `const double PI = 3.14;` 在程序运行期间其值可以改变的称为变量,变量要先声明,再使用。 ```c++ int a; //声明一个整数类型的变量a a = 100; //往a里面放入100这个数值,赋值 a = a + 1; cout << a; //取出a里面的数值100,进行输出 ``` --- c++支持在变量定义的同时初始化赋值,例如: ```c++ int n = 100; //声明一个整数类型的变量n, //同时放入一个数值100 ``` --- **`扩展理解`** ### 1. 变量名 * 大小写:区分大小写,如 A 和 a 是不同的变量名,但一般建议变量名用小写字母 * 规则:由字母、数字和下划线 3 种字符组成,第一个字符不能是数字 --- ### 2. 变量的作用 * 当变量用来赋值时,例如a = 3,这时a的作用是容器,用来放入后面的3(赋值)。 * 当变量用来计算时,例如a + 1,这时a的作用是值,用来把a的值(3)取出来,再加上1,产生了一个中间结果4,注意这个4不会影响到a,a还是3。 * 当变量同时赋值和计算,例如a = a + 1,右边a的作用是值,把值(3)取出来,加上1,产生中间结果4,然后把4放入左边的a(容器)。 --- ### 练习题 [输出第二个整数](http://39.99.183.126:8888/p/YBTJ1002) --- ### 三、表达式 --- ### 1. 表达式 `表达式`:多个对象通过运算符连接组成。 ```c++ 2 + 3 //算术表达式 a = 3 //赋值表达式 3 > 2 //关系表达式 ``` --- `表达式的值`: ```c 2 + 3 -----> 值为5 a = 3 -----> 值为3 3 > 2 -----> 值为true(真) ``` --- ### 2. 复杂表达式 表达式可以作为一个对象(中间结果),参与组成更加复杂的表达式。 ```c 3 + 4 + 5 //3 + 4是一个表达式,再与运算符+、5组成新表达式 3 + 4 * 5 //3、运算符+、表达式4*5(值是20)组成新表达式 3 +( 3 > 2) //3、运算符+、表达式3>2(值是1)组成新表达式 ``` --- ### 四、cin输入 --- ### 1、 cin输入流 - cin 和 cout 相反,一个是输入流,一个是输出流 - cin 从输入设备(一般为键盘)读入数据送到输入流中,赋值给指定变量。 - cout 是把信息输出到输出设备(一般为屏幕)。 --- ### 2、 cin 语法 - 代码语法:` cin >> 变量 1 >> 变量 2 >> ... >> 变量 n;` - 平台操作:运行的时候,在结果区点击鼠标出现焦点,输入数据,多个数据用空格隔开,最后回车。 - 程序运行:运行到cin语句时,会停止在那里等待用户输入,输入完成后(回车符号)才继续往下运行。 - cin读入数据给变量,遇到空格、tab、回车就停止,读取下一个变量用的数据。 --- ### 3、cin例子 ```c //定义变量,用来接收输入 int n; //程序运行到这里,会停止住,等待用户输入完成才继续往下 cin >> n; cout << n << endl; ``` --- 在学习阶段,建议使用cin前用cout输出提示,以防`看不到信息,不知道点击输入`。 --- ## 五、计数器 --- ### 1、计数器 通常我们把具有计数功能的变量称为“计数器”,一般计数器变量用i 、j、k、n等命名。 有时候如果明确是计算次数、个数的,变量名也有使用num、count(缩写为cnt)的。 --- ### 2、计数器模式 计数器在声明之后,要先设置一个初始值,一般是0。 计数器的运算一般都是每次+1或者-1。 --- ### 3、自增运算符 语句i = i + 1,也可以写成i++,++叫做自增运算符。 --- ### 4、自减运算符 语句 i = i - 1, 也可以写成 i--,--叫做自减运算符。 --- **`扩展理解`** ### 1、前自增和后自增 a = a * ++i ; i++和++i是不一样的。 i++表示先用原来的i,再把i增加1,++i表示先把i增加1,再拿来用。 --- 例如: * ``` i为10, x = i++,则x=10, i=11 ``` * ``` i为10, x=++i,则x=11, i=11 ``` --- ## 六、累加器 --- ### 1、累加器 指一个变量,每次在自己原来的值基础上累加新的数据,例如 ```c int n = 3; //把n的值(3)取出来,加上100,产生中间结果103,再放回n容器 n = n + 100; ``` --- ### 2、常用场景 当我们看到以下的场景时,首先就要想到这是一个累加器: ```c++ * 计算 1 + 2 + 3 + 4的和。 * 计算一个班级的成绩总和。 * 计算今天一共花了多少钱。 * 计算平均分。//先累加,再除数目,结果为平均分 ``` --- ### 3、累加器模式 ```c++ int sum = 0;//定义变量,初始化为0 sum = sum + 1;//右边是0+1,运算后,sum的值是1 sum = sum + 2;//右边是1+2,运算后,sum的值是3 sum = sum + 3;//右边是3+3,运算后,sum的值是6 ``` --- ### 4、更多运算 除累加之外,还有累减、累乘、累除等运算: ```c++ x = x - 2; y = y * 3; z = z / 4; ``` --- 总体上,都可以理解成: a) 取出变量的值。 b) 进行运算,产生中间结果。 c) 把中间结果放回变量。 --- ### 6.扩展理解 --- #### 6.1、累加与直接计算的区别 --- 直接计算: ```c n = 1 + 2 + 3 + 4 ``` --- 累加: ```c++ n = 0; n = n + 1; n = n + 2; n = n + 3; n = n + 4; ``` --- 累加有两种好处: * 可以在每一步输出结果,进行调试,例如: ```c n = n + 2; cout << n; //这个时候输出3 ``` --- * 可以继续往下累加(扩展),例如原来是加到4,现在加到5: ```c n = n + 4; //增加一行,不需要修改上面的代码 n = n + 5; ``` --- #### 6.2. 递推 实际上,累加模式创造了一种递推的可能,即每次运行的结果作为下次运算的基础。 递推模式: * 初始值: n = 0 * 递推公式: n = n + i, (i 从1到n) --- ### 七、除法与求余 --- #### 1、除法运算/ ```c 15 / 2, 表示15除以2的整数,值为7。 1 / 3, 值为0 1.0 / 4, 值为0.25 ``` --- /表示除法: * 如果是整数/整数,结果是整除,小数会被丢掉。 * 如果有一个浮点数,结果是浮点数。(float,double) --- #### 2、求余算法% ```c 15 % 2, 表示15除以2的余数,值为 1。 28 % 10, 表示38除以10的余数,值为8。 ``` %表示求余,%运算的结果不会超过后面的值,例如 % 10 的结果最大是9。 --- ### 八、小数类型 前面我们学到的都是整数,那么像0.5这样的小数,在编程语言里是怎么存储和使用的呢? --- #### 1、变量使用 ``` //浮点数的变量声明和赋值 float f = 0.5; double d = 0.5; ``` - float表示单精度浮点数,一般精度在7、8位数。 - double表示双精度浮点数,一般精度在15、16位数。 --- #### 2、混合运算的自动转换 不同数据类型的变量混合运算时,会自动将所有变量类型都转换成最大精度的类型进行运算。 --- 例如:整数运算表达式和浮点数运算表达式: ```c 1 + 2 -> 返回整数3 1.0 + 2 -> 返回浮点数3.0 1 / 2 -> 返回整数0 1.0 / 2 -> 返回浮点数0.5 ``` --- #### 3、案例:求金字塔边的面积 金字塔的边是等腰三角形,假设底是 3 米,高是 5 米,面积公式是底 乘 高 除以 2。 ```c++ int a = 3, b = 5; float s = a * b / 2; //返回的是7,原因是整数运算 s = a * b / 2.0; //返回的是7.5,被转换成浮点数运算 ``` --- [输出表达式的值](http://39.99.183.126:8888/p/P5) [打印长方形](http://39.99.183.126:8888/p/P6) [A+B问题](http://39.99.183.126:8888/p/YBTJ1006) [带余除法](http://39.99.183.126:8888/p/YBTJ1009)