寒假信奥c++
2025-02-11 12:04:49
发布于:浙江
//C++ D01语法篇 张斌的内库 (张斌是 自恋狂hhh)
1.基本框架
(1) 头文件: #include <bits/stdc++.h>//万能头
(2) 命名空间
(3) 主函数: 有且只有一个
2.数据类型
2.1 整型(integer)
(1) int: 整型 范围: -21亿~21亿 -231~231-1
(2) long long: 长长整型 范围: -1018~1018左右
2.2 浮点型
(1) float: 单精度浮点型(基本不用)
(2) double: 双精度浮点型(包不会错)
2.3 字符型
char: 定义单个字符
(1) 字符: 字母、数字、符号等用' '(单引号)包起来的单个符号
(2) ASCII码
'A'-65 'a'-97 '0'-48 ' '-32
2.4 字符串类型 string s;
(1) 头文件 #include <string>
(2) 计算长度 s.size(); s.length();
(3) 输入字符串
a - cin>>s;(输入无空格)
b - getline(cin,s);(有空格)
(4) 比较大小: 字典序(从小到大)
比较方式: 按位一个个比较过去,直到第一个不相同,谁大就谁大
"123"<"2" "121">"12"
3.输入输出
3.1 输入
(1) 单个变量或者字符串: cin >> 变量名;
(2) 数组: 循环输入
3.2 输出
(1) cout << endl;
(2) printf: 格式化输出
a - 小数输出: printf("%.?f",变量名); ? - 保留的位数
b - 右对齐-空格: printf("%?d",123);
c - 右对齐-补0: printf("%0?d",123);
4.条件分支语句
(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{
}
5.循环
(1) for循环
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);
6.数组
(1) 定义: 变量类型 数组名[数组空间]; //数组空间=n的最大值+5~10;
(2) 遍历范围: 0~n-1 或者 1~n => 注意循环范围
7.数位分类
(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(数组名+开始下标,数组名+结束下标,排序方式);
(3) 升序: 从小到大 sort(a,a+n);
(4) 降序: 从大到小
bool cmp(int x,int y){
return x>y;
}
sort(a,a+n,cmp);
10.结构体
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;
11.结构体排序
/*
题目: 学生有语文、数学、英语成绩,总分,输入顺序是学号
(1) 根据成绩从大到小
(2) 如果成绩相同,语文成绩从大到小
(3) 如果语文成绩相同,学好从小到大
*/
struct student{
int yw,sx,yy,sum,id;
}a[105];
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].swa[i].yy;
}
sort(a+1,a+n+1,cmp);
}
这里空空如也
有帮助,赞一个