0%

Cpp基础(1)基础语法

基础语法

Hello world

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<iostream>
using namespace std;
int main() {
cout << "Hello world" << endl;

//变量创建的语法: 数据类型 变量名 = 变量初始值
int a = 10;

cout << "a=" << a << endl;

system("pause");

return 0;
}

变量创建的语法: 数据类型 变量名 = 变量初始值

定义常量的两种方法:

  1. #define 宏常量名 常量值
  2. const 修饰的变量 const 数据类型 常量名 = 常量值

定义变量或常量时不要用C++中已经使用的关键字

C++中给标识符(变量,常量)命名时,要注意:
1.标识符不可以是关键字
2.标识符只能由字母,数字,下划线组成
3.标识符的第一个字母只能是字母或者下划线
4.标识符中区分大小写
5.给变量命名时最好能做到见名知意,方便阅读

数据类型

数据类型存在的意义:给不同类型的变量分配合适的内存空间

整型的几种类型:
1.短整型 short 2字节 -2^15 - 2^15-1
2.整型 int 4字节 -2^31 - 2^31-1 //int最常用
3.长整型 long 4字节 -2^31 - 2^31-1
4.长长整型 long long 8字节 -2^63 - 2^63-1

sizeof 关键字可以得到数据类型所占的内存的大小
语法: sizeof(数据类型/变量名)

实型/浮点型:用于表示小数
1.单精度 float 4字节 7位有效数字
2.双精度 double 8字节 15-16位有效数字

字符型:用于表示单个字符 只占用1个字节,将对应的ASCII码放入存储单元
语法:char ch = 'a'
需要注意:
1.要用单引号将字符括起来
2.单引号内只能有一个字符,不可以是字符串

字符串型:用于表示一串字符
两种风格:

  1. C风格字符串: char 变量名[] = “字符串值” 要用双引号
  2. C++风格字符串: string 变量名 = “字符串值” 需要加入头文件 #include<string>

转义字符: 用于表示一些不能显示出来的ASCII字符
常用的转义字符:/n 换行,将当前位置移到下一行开头
/t 水平制表,跳到下一个TAB位置,/t和其前面的内容一共占8个字符
// 代表一个反斜杠字符

布尔类型bool:代表真或假的值 占用1个字节
bool类型只有两个值:true(本质是1) false(本质是0)

数据的输入:用于从键盘获取数据
语法:cin >> 变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
int main1() {

short num1 = 10;
cout << "short所占的内存空间为" << sizeof(num1) << endl;

float f1 = 3.14f; //编译器会把小数默认为双精度数,所以要在3.14后加上f
cout << "f1=" << f1 << endl;

double d1 = 3.1415926;
cout << "d1=" << d1 << endl;
//显示小数默认是6位,若要改变可用<iomanip>库中的 setprecision( )
const double value = 12.3456789;
cout << value << endl; // 默认以6精度,所以输出为 12.3457
cout << setprecision(4) << value << endl; // 改成4精度,所以输出为12.35
cout << setprecision(8) << value << endl; // 改成8精度,所以输出为12.345679
cout << fixed << setprecision(4) << value << endl;
// 加了fixed意味着是固定点方式显示,所以这里的精度指的是小数位,输出为12.3457

cout << value << endl; // fixed和setprecision的作用还在,依然显示12.3457
cout.unsetf(ios::fixed); // 去掉了fixed,所以精度恢复成整个数值的有效位数,显示为12.35
cout << value << endl;
cout.precision(6); // 恢复成原来的样子,输出为12.3457
cout << value << endl;

//科学计数法
float f2 = 3e2;
cout << "f2=" << f2 << endl;

//查看字符型变量对应的ASCII码 a-97 A-65
char ch = 'a';
cout << (int)ch << endl;
ch = 97;
cout << ch << endl;

//字符串
char str1[] = "hello world";
cout << str1 << endl;

string str2 = "hello world";
cout << str2 << endl;

//布尔类型
bool flag = true;
cout << flag << endl;
flag = false;
cout << flag << endl;

//数据的输入
string str;
cout << "请输入字符串变量:" << endl;
cin >> str;
cout << str << endl;

system("pause");

return 0;
}

运算符

算术运算符:加+ 减- 乘* 除/
取模(取余)% 只有整型变量可以进行取模运算
需要注意:
1.进行运算的变量类型,如两个整型相除结果仍是整数
2.除数不能为0,取模运算除数也不能为0
3.只有整型变量可以进行取模运算,小数不可以

赋值运算符:用于将表达式的值赋给变量
赋值= 加等于+= 减等于-= 乘等于*= 除等于/= 模等于%=

比较运算符:用于表达式的比较,并返回一个真值或假值
相等于== 不等于!= 小于< 大于> 小于等于<= 大于等于>=

逻辑运算符:用于根据表达式的值返回真值或假值
非! 与&& 或||

要注意运算符的优先级

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include<iostream>
using namespace std;
int main2() {
//后置递增
int a = 10;
a++; //等价于a = a + 1
cout << a << endl; // 11

//前置递增
int b = 10;
++b;
cout << b << endl; // 11

//区别
//前置递增先对变量进行++,再计算表达式
int a2 = 10;
int b2 = ++a2 * 10;
cout << b2 << endl; // a2=11, b2=110

//后置递增先计算表达式,后对变量进行++
int a3 = 10;
int b3 = a3++ * 10;
cout << b3 << endl; // a3=11, b3=100

//比较运算符
a = 10;
b = 20;

cout << (a == b) << endl; // 0
cout << (a != b) << endl; // 1
cout << (a > b) << endl; // 0
cout << (a < b) << endl; // 1
cout << (a >= b) << endl; // 0
cout << (a <= b) << endl; // 1

system("pause");
return 0;
}

程序流程结构

C++支持的三种基本程序运行结构:顺序结构,选择结构,循环结构
1.顺序结构:程序按顺序执行,不发生跳转
2.选择结构:依据条件是否满足,有选择的执行相应功能
3.循环结构:依据条件是否满足,循环多次执行某段代码

选择结构

if语句:
1.单行格式if语句:if (条件) { 条件满足执行的语句}
2.多行格式if语句:if (条件) { 条件满足执行的语句} else{条件不满足执行的语句}
3.多条件的if语句:if (条件1) {条件1满足执行的语句} else if(条件2) {条件2满足执行的语句} …….else {条件都不满足执行的语句}
4.嵌套if语句
注意:if条件后面不要加分号

三目运算符:实现简单的判断
语法:表达式1 ? 表达式2 : 表达式3
解释:如果表达式1的值为真,执行表达式2,并返回表达式2的结果
如果表达式1的值为假,执行表达式3,并返回表达式3的结果
注意:C++中三目运算符返回的是变量,可以继续赋值

switch语句:执行多条件分支语句
语法:switch(表达式)
{
case 结果1:执行语句;break;
case 结果2:执行语句;break;

default:执行语句;break;
}
注意:1. switch语句中的表达式的数据类型只能是整型或字符型

        2. case里如果没有break,那么程序会一直向下执行
        3.对于多条件判断,switch的结构清晰,执行效率高

循环结构

while循环结构:满足循环条件,执行循环结构
语法:while (循环条件) {循环结构}
注意:在执行循环语句时,程序必须提供跳出循环的窗口,否则出现死循环

do … while循环语句:满足循环条件,执行循环语句
语法:do {循环语句} while (循环条件)
注意:do…while先执行一次循环语句,再判断循环条件

for 循环语句:满足循环条件
语法: for (起始表达式; 条件表达式; 末尾循环体) {循环语句}
注意: 先判断条件表达式,然后执行循环语句,然后再执行末尾循环体

嵌套循环

跳转语句

break 语句:用于跳出选择结构或者循环结构
使用的时机:出现在switch条件语句中,作用是终止case或者跳出switch
出现在循环语句中,作用是跳出当前的循环语句
出现在嵌套循环中,跳出最近的内层循环结构

continue语句:在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环
注意:continue不会使循环终止,而break会跳出循环

goto语句:可以无条件跳转语句
语法:goto 标记
如果标记的名称存在,执行到goto语句时,会跳转到标记的位置
注意:在程序中不建议使用goto语句,以免造成程序流程混乱

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include<iostream>
using namespace std;
int main(){
//嵌套if语句
int score = 0;
cout << "请输入考试分数:" << endl;
cin >> score;

if (score > 600)
{
cout << "我考上了一本大学" << endl;
if (score > 700)
{ cout << "我考上了北大" << endl; }
else if (score > 650)
{ cout << "我考上了清华" << endl; }
else
{ cout << "我考上了人大" << endl; }

}
else if (score > 500)
{ cout << "我考上了二本大学" << endl; }
else if (score > 400)
{ cout << "我考上了三本大学" << endl; }
else
{ cout << "我未考上本科" << endl; }

//三目运算符
int a = 10, b = 20, c = 0;
c = a > b ? a : b;
cout << "c = " << c << endl;

//C++中三目运算符返回的是变量,可以继续赋值
(a > b ? a : b) = 100; //b=100

cout << "a = " << a << endl; //a=10
cout << "b = " << b << endl; //b=100
cout << "c = " << c << endl;

//嵌套循环体
//外层循环执行1次,内层循环执行1轮
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
cout << "*" << " ";
}
cout << endl;
}

//continue语句
for (int i = 0; i < 100; i++){
if (i % 2 == 0)
continue;
cout << i << endl;
}
system("pause");
return 0;
}