目录
5.2.1 while循环:while(循环条件){循环语句}
1、面向对象程序设计:
1.1概述:对象、类、消息传递、方法
1.2基本特征:
封装:为了将代码模块化
把数据和显示操作的代码集中放在对象内部,可通过访问修饰符修饰
继承:实现代码的复用性
对象类之间的关系
多态:实现接口的复用性
不同对象收到相同消息时产生的多种不同的行为方式
1.3语言:c#、java、c++
2、c++基本语法
2.1编写一个hello world程序

2.2单行注释和多行注释
2.3变量(c++中所有数据都存放在内存中)
作用:给一段指定的内存空间起名,方便操作这段内存
语法:数据类型 变量名 = 初值;
变量存在的意义,比如:假设某块内存数据是整数1,我们要访问它时,可以根据它的内存编号(每个内存都有一个对应的地址编号,是十六进制)找到;但若有100个数据?100个地址编号则相对较繁琐了;此时使用变量表示一段内存,a代表了整数1,根据变量即可访问查找。

2.4常量:用于记录程序中不可更改的数据
c++定义常量的两种方式:
- #define宏常量 :#define 常量名 常量值
- const修饰的变量 :const 数据类型 变量名 = 常量值
在定义变量前面加关键字const,修饰该变量名为常量,其值之后不可修改


2.5关键字:
在给变量或常量起名时,不要用关键字,否则会产生歧义
sizeof关键字可以统计数据类型所占内存大小:sizeof(数据类型/变量)

2.6标识符命名规则
- 标识符不能是关键字
- 标识符组成:字母、数字、下划线
- 第一个字符必须是字母或下划线
- 标识符字母区分大小写

3、数据类型
基本数据类型:
bool、char、int、float、double、void、wchar_t
类型修饰符:
signed、unsigned、short、long
C++规定在创建一个变量或常量时,需指明它的数据类型,给变量分配合适的内存空间;若数据库类型未知,可能会造成空间浪费;
3.1整型:
| 数据类型 | 占用空间 |
| short | 2字节 |
| int | 4字节 |
| long | windows为4字节 |
| Long long | 8字节 |
3.2浮点型(表示小数)
| 数据类型 | 占用空间 | 有效数字范围 |
| 单精度float | 4字节 | 7位有效数字 |
| 双精度double | 8字节 | 15-16有效数字 |


3.3转义字符:
| 转义字符 | 含义 | ASCII码值(十进制) |
| \a | 警报 | 007 |
| \b | 退格,将当前位置移到前一列 | 008 |
| \f | 换页,将当前位置移到下页开头 | 012 |
| \n | 换行 | 010 |
| \r | 回车,将当前位置移到本行开头 | 013 |
| \t | 水平制表 | 009 |
| \v | 垂直制表 | 011 |
| \\ | 代表一个反斜杠字符“\” | 092 |
| \’ | 代表一个单引号字符 | 039 |
| \” | 代表一个双引号字符 | 034 |
3.4字符型:单个字符 ’’,只占用一个字符
在显示字符型变量时,用单引号将字符串括起来,不要用双引号;单引号只能有一个字符,不可以是字符串;
字符型变量不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元。

ASCII码大致由以下两部分组成:
ASCII非打印字符:ASCII表上的数字0-31分配给了控制字符,用于控制像打印机等一些外围设备;
ASCII打印字符:数字32-126分配给了能在键盘上找到的字符,当查看或打印文档时就会出现。
3.5字符串型:一串字符
String 变量名 = “字符串值”

3.6布尔类型bool:占1个字节
两个值:true--真(本质是1)、false--假(本质是0)
3.7数据的输入:用于从键盘获取数据
关键字:cin cin>>变量

4、运算符
| 运算符类型 | 作用 |
| 算术运算符 | 用于处理四则运算 |
| 赋值运算符 | 用于将表达式的值赋给变量 |
| 比较运算符 | 用于表达式的比较,返回一个真值或假值 |
| 逻辑运算符 | 用于根据表达式的值返回真值或假值 |
4.1算术运算符(只有整型才能进行取模运算)
| 运算符 | 术语 | 示例 | 结果 |
| ++ | 前置递增 | a=2;b=++a; | a=3;b=3; |
| ++ | 后置递增 | a=2;b=a++; | a=3;b=2; |
| -- | 前置递减 | a=2;b=--a; | a=1;b=1; |
| -- | 后置递减 | a=2;b=a--; | a=1;b=2; |
前置递增:先让变量+1,然后进行表达式运算
后置递增:先进行表达式运算,后让变量+1
4.2赋值运算符:=、 +=、-=、/=、%=
4.3比较运算符:==、!=、<、>、<=、>=
4.4逻辑运算符:!、&&、||
4.5三目运算符
表达式1?表达式2:表达式3
如果表达式1为真,执行表达式2,返回表达式2的结果;
如果表达式1为假,执行表达式3,返回表达式3的结果
在c++中三目运算符返回的是变量,可以继续赋值;例如:
b?a:b = 100
5、程序流程结构
C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构
顺序结构:程序按顺序执行,不发生跳转、
选择结构:依据条件是否满足,有选择的相应功能
循环结构:依据条件是否满足,循环多次执行某段代码
5.1选择结构
5.1.1 if语句
单行格式if语句:if(条件){ 结果 }
多行格式if语句:if(条件){ 结果1 } else{ 结果1 }
多条件的if语句:if(条件1){ 结果1 } else if(条件2){ 结果2 }......else{结果3}
嵌套if语句:if(条件1){ 结果1 ; if(条件2){结果2}...} else{结果3}
#include <iostream>
#include <string>
using namespace std;
int main() {
int A,B,C;
cout << "请输入A:" << endl;
cin >> A;
cout << "请输入B:" << endl;
cin >> B;
cout << "请输入C:" << endl;
cin >> C;
cout << "A为" << A << endl;
cout << "B为" << B << endl;
cout << "C为" << C << endl;
if (A > B) {
if (A > C) {
cout << "A、B、C中,A最大,其值为" << A << endl;
}
else
cout << "A、B、C中,C最大,其值为" << C << endl;
}
else {
if (B > C) {
cout << "A、B、C中,B最大,其值为" << B << endl;
}
else
cout << "A、B、C中,C最大,其值为" << C << endl;
}
system("pause");
return 0;
}
5.1.2 switch语句
switch(表达式)
{
case 结果1:执行语句;break;
case 结果2:执行语句;break;
...
default:执行语句;break;
}
5.1.3 if 和 switch区别?
switch判断时只能是整型或字符型,不可以是一个区间
Switch 优点:结构清晰,执行效率高
5.2循环结构
5.2.1 while循环:while(循环条件){循环语句}
只要循环条件为真,就执行循环语句
猜数游戏:
#include <iostream>
#include <string>
#include <ctime>
using namespace std;
int main() {
//猜数
//添加随机数,作用利用当前系统事件生成随机数,防止每次随机数都一样
srand((unsigned int)time(NULL));
int num = rand() % 100 + 1;
//玩家猜测
int val = 0;
while (1) {
cin >> val;
if (val > num) {
cout << "太大啦!" << endl;
}
else if (val < num) {
cout << "太小啦!" << endl;
}
else
{
cout << "恭喜你,猜对啦!" << endl;
break;
}
}
system("pause");
return 0;
}
5.2.2 do...while循环语句
do{循环语句} while(循环条件);
与while的区别在于,do...while会先执行一次循环语句,再判断循环条件
例:水仙花数,一个3位数,它的每个位上的数字的3次幂之和等于它本身
#include <iostream>
#include <string>
#include <ctime>
using namespace std;
int main() {
int num = 100;
do
{
//获取数字的个位十位百位数
int a = num / 100, b = (num/10)%10, c = num % 10;
//判断是否是水仙花数,若是,则输出
if (a*a*a + b * b*b + c * c*c == num) {
cout << num << endl;
}
num++;
} while (num<1000);
system("pause");
return 0;
}
5.2.3 for循环(较常用)
for(起始表达式;条件表达式;末尾循环体) {循环语句;}
例:敲桌子,从1开始到数字100,如果数字个位含有7,或者数字十位含有7,或者该数字是7的倍数,我们打印敲桌子,其余数字直接打印输出。
for (int i = 1; i <= 100; i++) {
//如果该数字能整除7、个位数是7或者十位数是7,则输出敲桌子,否则输出此数字
if (i % 7 == 0 || i / 10 == 7 || i % 10 == 7) {
cout << "敲桌子" << endl;
}
else
cout << i << endl;
}
5.2.4 嵌套循环
例子:乘法口诀表
//乘法表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
cout << j<< "*" << i << "=" << j * i<<" ";
}
cout << endl;
}
5.3跳转语句
5.3.1 break:跳出选择结构或循环结构
出现在switch条件语句中,终止case并跳出switch
出现在循环语句中,跳出当前的循环语句
出现在嵌套循环中,跳出最近的内层循环语句
5.3.2 continue
在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环
5.3.3 goto语句:goto 标记;
如果标记的名称存在,执行到goto语句时,会跳转到标记的位置

6、数组:存放相同类型的数据元素的集合
特点1:数组中的每个数据元素都是相同的数据类型
特点2:数组是由连续的内存位置组成的
6.1一维数组
定义的三种方式:
数据类型 数组名[数组长度];
数据类型 数组名[数组长度] = { 值1,值2...} ;
数据类型 数组名[] = { 值1,值2...} ;
一维数组数组名:
可以统计整个数组在内存中的长度
可以获取数组在内存中的首地址

例1:找出最重的(即最大的数)
int arr[5] = { 300, 350, 200, 400, 250 };
int temp = 0;
int index=0;
for (int i = 0; i < 5; i++) {
if (arr[i] > temp) {
index = i;
temp = arr[i];
continue;
}
}
cout << "第" << index + 1 << "只小猪的体重最重,为" << temp << endl ;
例2:数组逆置
法1:定义一个新的空数组
//数组逆置
int arr[5] = { 1, 3, 2, 5, 4 };
int arr1[5];//定义一个空数组
for (int i = 0; i < 5; i++) {
//元素组的末尾元素为新数组的第一个元素,以此类推
arr1[i] = arr[5 - i - 1];
cout << arr1[i] << " ";
}
法2:按平常的一般逻辑实现,前后交换
int arr[5] = { 1, 3, 2, 5, 4 };
int start = 0;//开始下标
int end = sizeof(arr) / sizeof(arr[0]) - 1;//末尾元素下标
while (start < end) {
//数据元素互换
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
cout << "数组逆置后:";
for (int i = 0; i < 5; i++) {//打印逆置后的数组
cout << arr[i] << " ";
}
例3:冒泡排序
//冒泡排序
//比较相邻的元素,如果第一个比第二个大,就交换它们;
//对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值;
//重复以上步骤,直到不需要比较
//对数组{4,2,8,0,5,7,1,3,9}进行升序排序
int arr[9] = { 4,2,8,0,5,7,1,3,9 };
//第1个for循环,共有9-1轮
for (int i = 0; i < 9-1; i++) {
//第2个for循环,单轮相邻元素的比较与交换
for (int j = 0; j < 9-i-1; j++) {
//前一个元素比后一个大时,则交换
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
//打印升序后的结果
cout << "升序后的数组元素为:";
for (int k = 0; k < 9; k++)
{
cout << arr[k] << " ";
}
cout << endl;
6.2 二维数组
定义的四种方式:
数据类型 数组名[行数][列数];
数据类型 数组名[行数][列数] = { { 数据1,数据2},{数据3...} };
数据类型 数组名[行数][列数] = {数据1,数据2,数据3...};
数据类型 数组名[ ][列数]={数据1,数据2,数据3...};
二维数组数组名:
查看二维数组所占内存空间
获取二维数组首地址

例:考试成绩统计
//考试成绩统计,输出三名同学的总成绩
//思路:输出每一行的总和即单个同学的总成绩
int scores[3][3] =
{
{100,100,100},
{90,50,100},
{60,70,80}
};
//存三位同学名字的数组
string names[3] = { "张三","李四","王五" };
for (int i = 0; i < 3; i++) {
int sum = 0;
for (int j = 0; j < 3; j++) {
sum += scores[i][j];
}
//打印对应同学的对应总成绩
cout << names[i]<< "的总成绩为" << sum << endl;
}
写在最后:一个c++小白,每天一笔记,每天一练习!!!
这篇博客详细介绍了C++的基础知识,包括面向对象编程的概念、C++的基本语法、数据类型、运算符、程序流程结构如if和switch语句、循环结构以及数组的使用。内容涵盖对象、类、消息传递、方法、变量、常量、关键字、标识符命名规则、整型、浮点型、字符型、字符串型、布尔类型、数据输入、算术和逻辑运算符,以及如何使用break和continue控制流程。此外,还讨论了一维和二维数组的应用。
562

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



