张斌大niu13
2025-02-11 12:03:42
发布于:浙江
//C++语法篇 - D01
//Day1 - 顺序结构
- 
基本框架 
 (1) 头文件: #include<bits/stdc++.h>//万能头,可以只写这个
 (2) 命名空间
 (3) 主函数: 有且只有一个
- 
数据类型 
 (1) 整型
 ①int : 整型 范围:-21亿~21亿 -231~231-1
 ②long long : 长长整型 范围:-1018~1018 左右
 (2) 浮点型
 ①float : 单精度浮点型 (基本不用)
 ②double : 双精度浮点型 (小数就用这个)
 (3) 字符型
 ①char : 定义单个字符
 字符 : 字母,数字,符号等,用 '单引号' 包起来的 '单个' 符号
 ②ASCII码
 'A'-65 'a'-97 '0'-48 '空格'-32
 (4) 字符串类型 string
 ①头文件 #include<string>
 ②计算长度 s.size(); s.length();
 ③输入字符串
 a) cin >> s;(不带空格)
 b) getline(cin,s); (带空格)
 ④比较大: 字典序(从小到大)
 比较方法: 按位数一个个比较过去,直到第一个不相同,谁大就谁大
 "123" < "2" "121" > "12"
- 
输入输出 
 (1) 输入
 ①单个变量或字符串: cin >> 变量名;
 ②数组: 循环输入
 (2) 输出
 ①cout << endl;
 ②printf: 格式化输出
 a) 小数: printf("%.2f"变量名); 保留两位小数
 b) 右对齐-空格: printf("%5d", 123);
 c) 右对齐-补0: printf("%05d", 123);
- 
条件分支语句 
 (1) 单分支语句; 如果 条件 成立, 执行语句
 if(条件){
 语句;
 }
 (2) 双分支语句: 如果 条件 成立,执行语句1; 否则语句2
 if(条件){
 语句1;
 } else{
 语句2;
 }
 (3)三目运算符: 条件?语句1; 语句2
 如果 条件 成立, 执行语句1; 否则语句2
 例如:
 int day =10;
 day == 10? cout << "老师真帅":cout<<"张斌真帅";
(4)多分支语句
if(){
} else if(){
} else if(){
} else{
}
- 循环
 (1)for(初始值;条件;变化量){
 循环体
 }
 初始值 -> 条件 -> 循环体 -> 变化量 -> ...
 for(int i = 1;i <= 10; i++){
 cout<<"老师真帅! ! ! "<< endl;
 }
(2) while循环
while(条件){
循环语句;
}
int day = 10;
while (day == 10){
cout << "老师真帅" <<endl;
}
(3)do-while: 相比while循环,如果条件不成立,至少执行一次
do{
cout << "老师真帅" <<endl;
} while(0);
- 
数组 
 (1) 定义: 变量类型 数组名[数组空间]; //数组空间=n的最大值+5~10
 (2) 遍历范围: 0~n-1 或者 1-n => 注意循环范围
- 
数位分离 
 (1)分离各位
 int n=12345;
 while (n){
 cout << n % 10;
 n/=10;
 }
 (2) 求和
 int n = 12345,s = 0;
 while (n){
 s+=n%10;
 n/=10;
 }
- 
函数 
 (1)函数声明 - 省略
 (2)函数定义
 函数类型 函数名(函数类型 变量名1, 变量类型 变量名2,...){
 函数内容;
 }
 函数类型 - 返回(int/double/string...) 无返回(void)
 (3)函数调用
 函数名(变量名1,变量2,...) => 注意: 类型需要一一对应
- 
sort 
 (1) 头文件: algorithm
 (2) 模板:sort(数组名+开始下标,数组名+结束下标+1,排序方式);
 (3) 升序:从小到大 sort(a,a+n);
 (4) 降序:从大到小
 bool cmp(int x,int y){
 return x > y;
 }
 sort(a,a+n,cmp);
- 
结构体 
 struct 结构体类型名{
 变量类型 变量名1;
 变量类型 变量名2;
 变量类型 变量名3;
 } 结构体变量名/数组;
 //结构体类型 结构体变量名;
 例如:
 struct student{
 string name;
 int id;
 int cls;
 int age;
 }a[105],b,c;
 //等同于 student a[105],b,c => 类似于 int a[105],b,c;
- 
结构体排序 
 /*
 题目:学生语文,数学,英语成绩,总分,输入顺序是学号
 (1) 根据成绩从大到小
 (2) 如果成绩相同,语文成绩从大到小
 (3) 如果语文成绩相同,学号从小到大
 */
 struct student{
 int yw,sx,yy,sum,id;
 }a[305];
 bool cmp(student x,student y){
 //1. 如果成绩不相同,成绩从大到小
 if(x.sum != y.sum) return x.sum > y.sum;
 //2. 否则(成绩相同)如果语文成绩不同,语文成绩从大到小
 else if(x.yw != y.yw) return x.yw > y.yw;
 //3. 否则(语文成绩相同),根据学号从小到大
 else return x.id < y.id;
 }
 int main(){
 int n;
 cin>>n;
 for(int i = 1;i <= n; i++){
 cin>>a[i].yw >> a[i].sw >> a[i].yy;
 a[i].id = i;
 a[i].sum =a[i].yw + a[i].sw + a[i].yy;
 }
 sort(a+1,a+n+1,cmp);
 }
这里空空如也






有帮助,赞一个