一 初始c++
1.1注释
作用:在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码 两种格式 1.单行注释://描述信息 通常放在一行代码的上方,或者一条语句的末尾,对该行代码说明 2.多行注释:/描述信息/ 通常放在一段代码的上方,对该段代码做整体说明 提示:编译器在编译代码时,会忽略注释的内容
1.2 变量
作用:该一段指定内存空间起名,方便操作这段内存。 语法:数据类型 变量名=初始值 示例:
#include<iostream>
using namespace std;
int main1()
{
int a = 10;
cout << "hello world" << endl;
cout << "a = " << a << endl;
system("pause");
return 0;
}
1.3 常量
作用:用于记录程序中不可更改的数据 C++定义常量两种方式 1.#define宏常量 #define常量名常量值 通常在文件上方定义,表示一个常量 2.const修饰的变量 const数据类型常量名=常量值 通常在变量定义前加关键字const,修饰该变量为常量,不可修改
#include<iostream>
using namespace std;
int main()
{
int a = 10;
cout << "a = " << a << endl;
system("pause");
return 0;
}
1.3 常量
作用:用于记录程序中不可更改的数据 C++定义常量两种方式 1.#define宏常量:#define常量名常量值 通常在文件上方定义,表示一个常量 2.const修饰的变量:const据类型常量名=常量值 通常在变量定义前加关键字const,修饰该变量为常量,不可修改
#include<iostream>
using namespace std;
#define day 7
int main()
{
cout << "一周有;" << day <<"天" << endl;
const int month = 12;
cout << "一年中有:" << month << "个月份" << endl;
return 0;
}
1.4 关键字
作用:关键字是C++中预先保留的单词(标识符)
1.5 标识符命名规则
作用:C++规定给标识符(变量、常量)命名时,有一套自己的规则
- 标识符不能是关键字
- 标识符只能由字母、数字、下划线组成
- 第一个字符必须为字母或下划线
- 标识符中字母区分大小写
建议:给标识符命名时,争取做到见名知意的效果,方便自己和他人的阅读
二 数据类型
C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型;否则无法给变量分配内存
2.1 整型
作用:整型变量表示的是整数类型的数据 C++中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同
数据类型 | 占用空间 | 取值范围 |
---|
short(短整型) | 2字节 | (-2^15 ~ 2 ^15 -1) | int(整型) | 4字节 | (-2^31 ~ 2^31-1) | long(长整形) | Windows为4字节,Linux为4字节(32位),8字节(64位) | (-2^31~ 2 ^31-1) | longlong(长长整形) | 8字节 | (-2^63 ~ 2 ^63-1) |
2.2 sizeof关键字
作用:利用sizeof关键字可以统计数据类型所占内存大小 语法:sizeof(数据类型/变量)
结论:short<int<long<long long
#include<iostream>
using namespace std;
int main()
{
cout << "short类型所占的空间为:" << sizeof(short) << endl;
cout << "int类型所占的空间为:" << sizeof(int) << endl;
cout << "long类型所占的空间为:" << sizeof(long) << endl;
cout << "long long类型所占的空间为:" << sizeof(long long) << endl;
}
short类型所占的空间为:2
int类型所占的空间为:4
long类型所占的空间为:4
long long类型所占的空间为:8
C:\Users\HP\Desktop\01 hello world\x64\Debug\01 hello world.exe (进程 4756)已退出,代码为 0。
按任意键关闭此窗口. . .
2.3 实型(浮点型)
作用:用于表示小数 浮点型变量分为两种: 1.单精度float 2.双精度double 两者的区别在于表示的有效数字范围不同
数据类型 | 占用空间 | 有效数字范围 |
---|
float | 4字节 | 7位有效数字 | double | 8字节 | 15~16位有效数字 |
#include<iostream>
using namespace std;
int main()
{
float fl = 3.14159f;
cout << "fl=" << fl << endl;
double d1 = 3.1415926;
cout<< "d1=" << d1 << endl;
cout << "float所占的字节为:" << sizeof(float) << endl;
cout << "double所占的字节为:" << sizeof(double) << endl;
float f2 = 8e2;
cout<< "f2=" << f2 << endl;
float f3 = 3e-2;
cout << "f3=" << f3 << endl;
}
fl=3.14159
d1=3.14159
float所占的字节为:4
double所占的字节为:8
f2=800
f3=0.03
2.4 字符型
作用:字符型变量用于显示单个字符 语法: char ch='a'
注意1:在显示字符型变量时,用单引号将字符括起来,不要用双引号 注意2:单引号内只能有一个字符,不可以是字符串
1 C和C++中字符型变量只占用1个字节 2 字符变量并不是将自身的符号翻到内存中存储,而是将对应的ASCII编码放到内存中
#include<iostream>
using namespace std;
int main()
{
char ch = 'a';
cout << "ch=" << ch << endl;
cout << "ch所占内存大小:" << sizeof(ch) << endl;
cout << (int)ch << endl;
}
ASCII码大致由以下两部分组成:
- ASCII表上的数字0-31分配给了控制字符:ASCII非打印控制字符:用于控制像打印机等一些外围设备
- ASCII打印字符:数字32-126分配给了能在键盘上找到的字符,当查看或打印文档时就会出现
2.5 转义字符
作用:用于表示一些不能显示出来的ASCI字符 现阶段我们常用的转义字符有:\n \ \t
转义字符 | 含义 | ASCII码值(十进制) |
---|
\a | 警报 | 007 | \b | 退格(BS),将当前位置移到前一列 | 008 | \f | 换页(FF),将当前位置移到下页开头 | 012 | \n | 换行(LF),将当前位置移到下一行开头 | 010 | \r | 回车(CR),将当前位置移到本行开头 | 013 | \t | 水平制表(HT)(跳到下一个TAB位置) | 009 | \v | 垂直制表(VT) | 011 | \ | 代表一个反斜线字符"\“ | 092 | ’ | 代表一个单引号(撤号)字符 | 039 | " | 代表一个双引号字符 | 034 | \v | 代表一个问号 | 063 |
int main()
{
cout << "hello world\n";
cout << "\\" << endl;
cout << "aaa\t hello woeld" << endl;
cout << "aaaa\t hello world" << endl;
}
2.6 字符串型
作用:用于表示一串字符 两种风格 1.C风格字符串:char 变量名[]="字符串值" 2.C++风格字符串:string 变量名=“字符串值”
int main()
{
char str[] = "hello world";
cout << str << endl;
string str2 = "hello world";
cout << str2 << endl;
}
2.7 布尔类型bool
作用:布尔数据类型代表真或假的值 bodl类型只有两个值 true–真(本质是1) false—假(本质是0) bodl类型占1个学节大小
int main() {
bool flag = true;
cout << flag << endl;
flag = false;
cout << flag << endl;
cout << "bool所占的字节:" << sizeof(bool) << endl;
}
1
0
bool所占的字节:1
2.8 数据的输入
作用:用于从键盘获取数据 关键字:cin 语法:Cin>>变量
int main()
{
int a = 0;
cout << "请输入一个整数:" << endl;
cin >> a ;
cout <<"输入的数是:" << a << endl;
float b = 0.0;
cout << "请输入一个浮点数:" << endl;
cin >> b;
cout << "输入的浮点数是:" << b << endl;
char ch = 'o';
cout << "请输入一个字符:" << endl;
cin >> ch;
cout << "字符是:" << ch << endl;
string str = "hello wrold";
cout << "请输入一个字符串" << endl;
cin >> str;
cout<< "字符串为:" << str << endl;
}
三 运算符
作用:用于执行代码的运算 本章我们主要讲解以下几类运算符:
运算符类型 | 作用 |
---|
算术运算符 | 用于处理四则运算 | 赋值运算符 | 用于将表达式的值赋给变量 | 比较运算符 | 用于表达式的比较,并返回一个真值或假值 | 逻辑运算符 | 用于根据表达式的值返回真值或假值 |
3.1 算术运算符
作用:处理四则运算 算术运算符包含以下符号:
运算符 | 术语 | 实例 | 结果 |
---|
+ | 正号 | +2 | 2 | - | 负号 | -2 | -2 | + | 加 | 2+3 | 5 | - | 减\3-2 | 1 | | * | 乘 | 2*3 | 6 | / | 除 | 6/2 | 3 | % | 取模(取余) | 10/3 | 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 |
int main()
{
int num1, num2,a=10;
cout << "请输入两个整数:" << endl;
cin >> num1;
cin >> num2;
cout << num1 << "+" << num2 << "="<< num1 + num2 << endl;
cout << num1 << "-" << num2 << "="<< num1 - num2 << endl;
cout << num1 << "*" << num2 << "="<< num1 * num2 << endl;
cout << num1 << "/" << num2 << "="<< num1 / num2 << endl;
cout << num1 << "%" << num2 << "="<< num1 % num2 << endl;
cout << "a=" << a << endl;
cout << "前置递增: " << a <<"\t" << "c=" << ++a << endl;
cout << "后置递增: " << a <<"\t" << "c=" << a++ << endl;
cout << "后置递减: " << a << "\t" << "c=" << --a << endl;
cout << "后置递减: " << a <<"\t" << "c=" << a-- << endl;
}
3.2 赋值运算符
作用:用于将表达式的值赋给变量 赋值运算符包括以下几个符号:
运算符 | 术语 | 示例 | 结果 |
---|
= | 赋值 | a=2;b=3; | a=2:b=3; | += | 加等于 | a=0;a+=2; | a=2; | -= | 减等于 | a=5:a-=3 | a=2; | *= | 乘等于 | a=2:a*=2; | a=4; | /= | 除等于 | a=4;a/=2; | a=2; | %= | 模等于 | a=3;a%2; | a=1; |
3.3 比较运算符
作用:用于表达式的比较,并返回一个真值或假值 比较运算符有以下符号:
术语 | 运算符 | 示例 | 结果 |
---|
== | 相等于 | 4==3 | 0 | != | 不等于 | 4!=3 | 1 | < | 小于 | 4<3 | 0 | > | 大于 | 4>3 | 1 | <= | 小于等于 | 4<=3 | 0 | >= | 大于等于 | 4>=1 | 1 |
3.4 逻辑运算符
作用:用于根据表达式的值返回真值或假值 逻辑运算符有以下符号
运算符 | 示例 | 术语 | 结果 |
---|
! | 非 | !a | 如果a为假,则!a为真;如果a为真,则!a为假 | && | 与 | a&&b | 如果a和b都为真,则结果为真,否则为假。 | ll | 或 | allb | 如果a和b有一个为真,则结果为真,二者都为假时,结果为假. |
四 程序流程结构
C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构
- 顺序结构:程序按顺序执行,不发生跳转
- 选择结构:依据条件是否满足,有选择的执行相应功能
- 循环结构:依据条件是否满足,循环多次执行某段代码
4.1 选择结构
4.1.1 if语句
作用:执行满足条件的语句 i语句的三种形式
单行格式if语句
1.单行格式i语句:if(条件){条件满足执行的语句}
int main()
{
int score = 0 ,input=0;
cout << "请输入你的分数:" << endl;
cin >> score;
cout << "你的分数是:" << score<<endl;
cout << "请确定你的分数是否正确,正确请打1,不正确请打2" << endl;
cin >> input;
if (input == 2)
{
cout << "请输入你的分数:" << endl;
cin >> score;
cout << "你的分数是:" << score << endl;
cout << "请确定你的分数是否正确,正确请打1,不正确请打2" << endl;
cin >> input;
if (score >= 600)
{
cout << "win" << endl;
}
else
{
cout << "fall" << endl;
}
}
else
{
if (input == 1 )
{
if (score >= 600)
{
cout << "win" << endl;
}
}
else
{
cout << "fall" << endl;
}
}
}
不要加分号,加分号后ift条件与后边不会产生结构的联系
多行格式语句
多行格式i语句:if(条件){条件满足执行的语句elset条件不满足执行的语句;}
ture
false
开始
判断条件
执行语句1
执行语句2
结束
多条件的i语句
int main()
{
int score = 0;
cout << "请输入你的分数:\n";
cin >> score;
if (score >= 600)
{
cout << "恭喜你,考上了211" << endl;
}
else if (score >= 500)
{
cout << "恭喜你,考上了一本" << endl;
}
else if (score>=400)
{
cout << "恭喜你,考上了二本" << endl;
}
else
{
cout << "抱歉,你没有考上本科" << endl;
}
}
嵌套if语句
嵌套if语句:在i语句中,可以嵌套使用i语句,达到更精确的条件判断 案例需求:
- 提示用户输入一个高考考试分数,根据分数做如下判断
- 分数如果大于600分视为考上一本,大于500分考上二本,大于400考上三本,其余视为未考上本科
- 在一本分数中,如果大于700分,考入北大,大于650分,考入清华,大于600考入人大
int score = 0;
cout << "请输入你的分数:" << endl;
cin >> score;
if (score >= 600)
{
cout << "恭喜你在一本行列;更详细的如下:" << endl;
if(score>=700)
{
cout << "恭喜你,考上了北大\n";
}
else if ( score >= 650)
{
cout << "恭喜你,考上了清华\n";
}
else
{
cout << "恭喜你,考上了人大\n";
}
}
else if (score >= 500)
{
cout<<"恭喜你,考上了二本" << endl;
}
else if (score>=400)
{
cout<<"恭喜你,考上了三本" << endl;
}
}
练习案例:
三只小猪称体重,有三只小猪ABC,请分别输入三只小猪的体重,并且判断哪只小猪最重
int main()
{
int A=0,B=0,C=0;
cout << "请输入小猪A的体重:" << endl;
cin >> A;
cout << "请输入小猪B的体重:" << endl;
cin >> B;
cout << "请输入小猪C的体重:" << endl;
cin >> C;
if (A > B && A > C)
{
cout << "A" << endl;
}
if (B > A && B > C)
{
cout << "B" << endl;
}
if (C > A && C > B)
{
cout << "C" << endl;
}
return 0;
}
int main()
{
int num1=0, num2=0, num3=0;
cout << "请输入小猪A的体重:"<< endl;
cin >> num1;
cout << "请输入小猪B的体重:" << endl;
cin >> num2;
cout << "请输入小猪C的体重:" << endl;
cin >> num3;
if (num1 > num2)
{
if (num1 > num3)
{
cout << "A最重\n";
}
else
{
cout << "最重\n";
}
}
else
{
if (num2 > num3)
{
cout << "C最重\n";
}
else
{
cout << "C最重\n";
}
}
}
4.1.2 三目运算符
作用:通过三目运算符实现简单的判断 语法:表达式1?表达式2:表达式3
- 解释:
如果表达式1的值为真,执行表达式2,并返回表达式2的结果 如果表达式1的值为假,执行表达式3,并返回表达式3的结果
int main()
{
int a = 10, b = 20, c = 0;
c= a > b ? a: b;
cout << "c=" << c << endl;
(a > b ? a : b) = 100;
cout << "a=" << a << endl;
cout << "b=" << b << endl;
}
结果如下:
c=20
a=10
b=100
4.1.3 switch语句
作用:执行多条件分支语句
注意1:switch语句中表达式类型只能是整型或者字符型 注意2:case里如果没有break,那么程序会一直向下执行 总结:与if语句比,对于多条件判断时,switch的结构清晰,执行效率高,缺点是switch不可以判断区间
int main()
{
int score=0;
cout << "请给电影打分:" << endl;
cin >>score;
switch(score)
{
case 10:
cout << "goood goood goood good goood" << endl;
break;
case 9:
cout << "goood good goood goood" << endl;
break;
case 8:
cout << "good goood goood" << endl;
break;
case 7:
cout << "good goood" << endl;
break;
case 6:
cout << "good" << endl;
break;
case 5:
cout << "just so so" << endl;
break;
defalt:
cout << "bad\n";
}
}
|