C++基础语法
1 数据类型
字节:数据类型占用的空间大小
1
2
3
4int a; // 整数类型 4字节  
long long l; // 长整数类型 8字节  
char c; // 字符类型 1字节  
double d; // 浮点数类型 8字节  
2 基本运算
+ - * /
对于 / 除: 整数/整数 = 整数 10 / 3 = 3
如果其中有浮点数,则结果有小数,如 10 / 3.0 = 3.3333 %
取余,如 10 % 3 = 1 15 % 4 =3
类型自动转换:在运算过程中,如果数据类型不一致,自动将低精度转化为高精度
char < int < long long < double
3 输入输出
1  |  | 
4 分支结构
1  |  | 
如果条件1成立则执行代码块1,否则如果条件2成立则执行代码块2,如果前面都不成立,则执行代码块3
注意:任何一个条件成立就停止判断
条件里可以用什么运算?
- 关系运算符 
== != >= <= > < - 逻辑运算符 
&&且(两个都满足才满足)||或(只要一个满足就满足)!非(相反) 
5 循环结构
for 循环 1
2
3
4for(初始化; 条件; 步长) {
    循环体;
}
//第一次循环先执行初始化语句,之后判断是否满足条件,满足则进入循环执行循环体,不满足则跳出循环,执行循环体之后执行步长语句1
2
3
4
5
6// 从0开始,到 < n,取不到n
for(int i = 0; i < n; i++) {
}
// 从1开始,到 <= n,能取到n
for(int i = 1; i <= n; i++) {
}while 循环 1
2
3
4while(条件) {
    循环体;
}
// 条件满足则进入循环体,不满足则跳出do-while循环 1
2
3
4do {
    循环体;
} while(条件);
// 不管是否满足条件,至少先执行一次循环体,然后再判断条件,决定是否继续循环
三种循环通用:
break:终止当前的循环continue:跳过本轮循环
6 数组
需要存储很多相同类型的变量,可以使用数组。
声明格式: 1
2
3数据类型 数组名[数组长度];
int a[1000];
double d[10000];
数组访问通过下标(索引)完成,下标从0开始,不能越界。
数组的遍历: 1
2
3for(int i = 0; i < n; i++) {
    cin >> a[i];
}
二维数组
可以理解为数组里面的元素还是一个数组,或者理解为一个矩阵,里面都是相同类型的元素。
声明格式: 1
2数据类型 数组名[行数][列数]; // 先行后列
int a[100][100];
对于二维数组的访问,也是通过下标,先行后列。
二维数组遍历,借助循环嵌套完成。 1
2
3
4
5
6
7
8// n行m列
for(int i = 0; i < n; i++) {
    for(int j = 0; j < m; j++) {
        cin >> a[i][j];
    }
}
// 内层循环整个结束之后,外层循环才会执行一次
7 函数
把常用功能进行封装,把相同的功能提取出来,不同的地方作为参数。
声明格式: 1
2
3
4返回值类型 函数名(参数1类型 参数1, 参数2类型 参数2) {
    函数体;
    返回;
}
举例: 1
2
3
4
5
6
7
8int max(int a, int b) {
    if(a > b) return a;
    else return b;
}
int main() {
    // 在主函数调用自定义函数
    int max_num = max(a, b);
}
8 结构体
把不同类型的变量封装成一个自定义类型,就叫结构体。
比如自己创造一个学生类型。 声明格式: 1
2
3
4struct 结构体类型名 {
    类型1 变量1;
    类型2 变量2;
};
举例: 1
2
3
4struct student {
    string name;
    int age;
};
上述代码写完,是我们自己创造了一个类型为student的数据类型,但还没有创建变量,格式和正常的int一样,比如:
1
2
3
4// stu中包括name和age
student stu;
// 也可以创建数组,数组中的每一个元素都是一个结构体
student s[100];
创建结构体变量还有一种简便方法,如下: 1
2
3
4struct student {
    string name;
    int age;
} stu;
结构体成员的访问:
使用.来访问结构体变量里面的成员,对于每个成员都像一个普通变量一样使用,比如:
1
2
3
4
5cin >> stu.name >> stu.age;
// 结构体数组使用如下
for(int i = 0; i < n; i++) {
    cin >> s[i].name >> s[i].age;
}