第一章:顺序结构

基础一

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++语言初学者使用.

2. 键盘位置

看一下你的键盘,和下面的图(少了最上面的一行)做一个对照。

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

#include <iostream>
using namespace std;
int main() {
  cout<<"hello world!";
  return 0;
}

[练习题]

Hello,World!

基础二

一、 cout输出

1、中文输出

双引号""表示是字符串,可以直接使用中文。

要小心的是,单引号只能是英文字符",不能是中文字符“,如果用了中文的“就会报错。

2、连续输出

如果要连续输出字符串和数值,例如:我的年龄是:11。

直接把字符串和数值连起来,用cout输出,这种方法是不行的。

cout << "我的年龄是:"11;

可以使用两个cout输出,或者用一个cout连续输出:

cout << "我的年龄是:";
cout << 11;

cout << "我的年龄是:" << 11;

3、 四则运算

学会cout输出以后,我们就可以使用cout输出四则运算的结果了。

cout << 3+2;  //结果是5

表达式:3+2不是字符串,而是表达式,输出的是表达式的结果(数值)。

4、换行符

endl 表示 换行符,用cout << endl就会实现换行。

cout << endl;
cout << endl;
cout << endl;

会输出三个空行。

5、多行输出

利用cout的连续输出特性,在输出信息后再跟一个endl,就能实现多行输出。

cout << "春眠不觉晓," << endl;
cout << "处处蚊子咬。" << endl;

练习题

单句春晓

唐诗春晓

01子串

字符三角形

二、整型变量

1. 变量

** 常量** const double PI = 3.14;

在程序运行期间其值可以改变的称为变量,变量要先声明,再使用。

int a;         //声明一个整数类型的变量a
  a = 100;   //往a里面放入100这个数值,赋值
  a = a + 1;
  cout << a; //取出a里面的数值100,进行输出

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(容器)。

练习题

输出第二个整数

三、表达式

1. 表达式

表达式:多个对象通过运算符连接组成。

2 + 3  //算术表达式
  a = 3  //赋值表达式
  3 > 2 //关系表达式

表达式的值

2 + 3   ----> 值为5
   a = 3  -----> 值为3
   3 > 2  -----> 值为true(真)

2. 复杂表达式

表达式可以作为一个对象(中间结果),参与组成更加复杂的表达式。

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例子

//定义变量,用来接收输入
  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、累加器

指一个变量,每次在自己原来的值基础上累加新的数据,例如

int n = 3;
//把n的值(3)取出来,加上100,产生中间结果103,再放回n容器
 n = n + 100;

2、常用场景

当我们看到以下的场景时,首先就要想到这是一个累加器:

* 计算 1 + 2 + 3 + 4的和。
  * 计算一个班级的成绩总和。
  * 计算今天一共花了多少钱。
  * 计算平均分。//先累加,再除数目,结果为平均分

3、累加器模式

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、更多运算

除累加之外,还有累减、累乘、累除等运算:

x = x - 2;
y = y * 3;
z = z / 4;

总体上,都可以理解成: a) 取出变量的值。 b) 进行运算,产生中间结果。 c) 把中间结果放回变量。

####6.扩展理解*

6.1、累加与直接计算的区别

直接计算:

n = 1 + 2 + 3 + 4

累加:

n = 0;
n = n + 1;
n = n + 2;
n = n + 3;
n = n + 4;

累加有两种好处:

  • 可以在每一步输出结果,进行调试,例如:
    n = n + 2;
    cout << n; //这个时候输出3
    
  • 可以继续往下累加(扩展),例如原来是加到4,现在加到5:
    n = n + 4;
    //增加一行,不需要修改上面的代码
    n = n + 5;
    

6.2. 递推

实际上,累加模式创造了一种递推的可能,即每次运行的结果作为下次运算的基础。

递推模式:

  • 初始值: n = 0
  • 递推公式: n = n + i, (i 从1到n)

七、除法与求余

1、除法运算/

15 / 2, 表示15除以2的整数,值为7。
1 / 3, 值为0
1.0 / 4, 值为0.25

/表示除法:

  • 如果是整数/整数,结果是整除,小数会被丢掉。
  • 如果有一个浮点数,结果是浮点数。(float,double)

2、求余算法%

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、混合运算的自动转换

不同数据类型的变量混合运算时,会自动将所有变量类型都转换成最大精度的类型进行运算。

例如:整数运算表达式和浮点数运算表达式:

1 + 2  -> 返回整数3
1.0 + 2 -> 返回浮点数3.0
1 /  2  -> 返回整数0
1.0 / 2 ->  返回浮点数0.5

3、案例:求金字塔边的面积

金字塔的边是等腰三角形,假设底是 3 米,高是 5 米,面积公式是底 乘 高 除以 2。

int a = 3, b = 5;
  float s = a * b / 2;  //返回的是7,原因是整数运算
  s = a * b / 2.0;  //返回的是7.5,被转换成浮点数运算

1.2103 1.2 * 10^3

1210212 * 10^2

a = 1e8;