C++模板
#include <bits/stdc++.h> //导入万能头文件 using namespace std; //使用标准的命名空间 int main(){ //主程序 return 0; //成功运行并结束程序 }
数据类型
数据类型 表示 举例 所占字节 范围 字符类型 char ‘a’ '0' '+' 1 布尔类型 bool 0/flase 1/true 1 0~1 即不成立~成立 非0即1 整数类型 int 1 12 123 2134 4 -2147483648到2147483647 双精度浮点类型 double
1.0 145.0 135.2168 8 15到16位有效数字 字符串 string "123" "zm" "~~" "1z!"
数据类型的转换
1. 当两个相同的数据类型之间互相运算,得到的结果就是这个数据类型。
比如int 与 int 之间互相运算,得到的结果为int
double 与 double 之间互相运算,得到的结果为 double
2. 当两个不同的数据类型之间互相运算,得到的结果就需要根据实际情况来决定了。
类型转换分为两种:
(1) 隐性转换:两个不同数据类型的值互相运算,得到的结果为字节大的那个类型
例如:int 与 double 运算,结果为double类型
cout<<1+1.1; 输出为2.1char 与 int 运算,结果为int类型
cout<<'a'+1; 输出98(2) 强制转换:两个不同数据类型的值互相运算,得到的结果应该是字节大的那个类型,但我希望得到的类型为其他的类型,因此需要强制转换。
例如:int 与 double 运算,结果强制转换为int类型
cout<<(int)(1+1.1); 输出为2char 与 int 运算,结果,结果强制转换为char类型
cout<<(char)('a'+1); 输出b
ASCLL码
ASCII(American Standard Code for Information Interchange),即美国信息交换标准代码,是一种用于表示字符的标准编码方式,主要用于英语字母和其他常见符号的数字化表达
只写常用的且需要背过的三个,其他的可以自行搜索“ASCLL码表”
'0'对应48 'A'对应65 'a'对应97
以此进行类推,比如'1'对应49 '2'对应50 'B'对应66 'b'对应98 等
大小写字母之间相差32 也就是 'a' - 'A' = 32
变量
变量名的基本命名规则
- 变量只能由数字、字母、下划线组成 且 数字不可以作为变量名开头
- 不可以用C++的关键字作为变量名,关键字:
- 在命名时,建议使用通俗易懂的名字命名
- 变量名由多个单词组成的时候,建议采用“驼峰命名法”,每个单词的首字母大写
变量名的定义
- 四大要素:数据类型 变量名 赋值运算符 值
- 一般来说分为两种情况:
- 一种是一开始就知道这个变量的值
//例如,学生有8个人。 //分析,变量名为学生studentNumber,存储的是学生数量8,值为整数类型int int studentNumber= 8; //例如,有个学生叫ZM //分析,变量名为学生名字studentName,存储的是学生姓名zm,值为字符串类型string string studentName = "zm";- 一种是需要在键盘上输入值存到变量
//例如,需要从键盘上输入学生的年龄 //分析,需要一个变量studentAge来存储学生的姓名, // 年龄是整数int类型,然后通过cin输入进去。 int studentAge; cin>>name; //例如,需要从键盘上输入学生的姓名 //分析,需要一个变量studentName来存储学生的姓名, // 姓名是字符串string类型,然后通过cin输入进去。 string studentName; cin>>studentName;当然变量名studentNumber也好,studentName也好,可以自己命名,要符合命名规则
在编程过程中,如果缺少变量,可以创造变量
输出
cout<<
- 当输出的值是文本类型的时候,需要加双引号
- 当输出的值是数字类型的时候,可以加双引号,也可以不加引号
- 当输出的值是变 量的时候,不需要加双引号
保留n位小数后输出
cout<<fixed<<setprecision(n)<<shu;
换行
<<endl
输入
cin>>
运算符
赋值运算符 赋值 = age=10 name="zm" 将等号右边的结果赋值到等号左边的变量 算数运算符 加法 + 1+2 a+2 a+b 两个数相加 减法 - 1-2 a-2 a-b 两个数相减 乘法 * 1*2 a*2 a*b 两个数相乘 除法 / 1*2 a*2 a*b 两个数相除,除数不可以是0 求余 % 2%1 a%2 a%b 两个数求余数,两个数必须是整数 关系运算符 大于 > 2>1 a>2 a>b 两个数比较,成立则为1,不成立为0 大于等于 >= 2>=1 a>=2 a>=b 小于 < 2<1 a<2 a<b 小于等于 <= 2<=1 a<=2 a<=b 比较等于 == 2==1 a==2 a==b 比较不等于 != 2!=1 a!=2 a!=b 逻辑运算符 与/并且 && 条件A && 条件B 有一个条件不满足,整个条件都不满足 或/或者 | | 条件A | | 条件B 有一个条件满足,整个条件都满足 非/不是 ! ! 条件A 取到相反的结果 符合算数
运算符
加等 += a+=b 相当于a=a+b 减等 -= a-=b 相当于a=a-b 乘等 *= a*=b 相当于a=a*b 除等 /= a/=b 相当于a=a/b 模等 %= a%=b 相当于a=a%b
实战环节---输入、输出与变量
题目一:打印三角形
在屏幕上输出一个这样的三角形
* *** *****#include <bits/stdc++.h> using namespace std; int main(){ cout<<" *"<<endl; cout<<" ***"<<endl; cout<<"*****"<<endl; return 0; }
题目二:姓名与年龄
在键盘上输入学生的姓名和年龄,并输出“姓名为?,年龄为?”
输入案例:小A 13 输出案例:姓名为小A,年龄为13
输入案例:小B 31 输出案例:姓名为小B,年龄为31
#include <bits/stdc++.h> using namespace std; int main(){ string name; int age; cin>>name>>age; cout<<"姓名为"<<name<<",年龄为"<<age; return 0; }易错解析:在输入的时候,这种写法是不被允许的
cin>>name="小A">>age=13;cin<<name,age;
题目三:数学计算
输入两个整数,将他们进行五个计算并输出结果
输入:13 3 输出: 13+3=16 13-3=10 13*3=39 13/3=4 13%3=1#include <bits/stdc++.h> using namespace std; int main(){ int a,b; cin>>a>>b; cout<<a<<"+"<<b<<"="<<a+b<<endl; cout<<a<<"-"<<b<<"="<<a-b<<endl; cout<<a<<"*"<<b<<"="<<a*b<<endl; cout<<a<<"/"<<b<<"="<<a/b<<endl; cout<<a<<"%"<<b<<"="<<a%b<<endl; return 0; }
分支语句---if
单分支语句 if
如果(条件满足){ if(条件){
执行任务 任务;
} }任务:如果满足天晴,那么出去玩 if(天晴){ 出去玩; } 任务:如果a大于10,那么输出a if(a>10){ cout<<a; }
双分支语句 if...else...
如果(条件满足){ if(条件){
执行任务A 任务A;
}否则{ }else{执行任务B 任务B;
} }
任务:如果满足天晴,那么出去玩;否则待在家 if(天晴){ 出去玩; }else{ 待在家; } 任务:如果a大于10,那么输出a;否则输出no if(a>10){ cout<<a; }else{ cout<<"no"; }
多分支语句 if...else if...else...
如果(条件1满足){ if(条件1){
执行任务A 任务A;
}否则 如果(条件2满足){ }else if(条件2){执行任务B 任务B;
} 否则{ }else{
执行任务C 任务C;
} }
任务:如果满足天晴,那么出去玩,否则如果下雨,那么室内玩;否则睡觉 if(天晴){ 出去玩; }else if(下雨){ 室内玩; }else{ 睡觉; } 任务:如果a大于10,那么输出大;否则如果a小于0,那么输出小;否则输出中 if(a>10){ cout<<"大"; }else if(a<0){ cout<<"小"; }else{ cout<<"中"; }
实战环节---分支语句---if
题目一:判断闰年
闰年条件:四年一闰,百年不闰,四百年再闰。
也就是:年份除以4能被整除 且 年份不能被100整除 或者 年份可以被400整除
C++表示:year%4==0 && year%100!=0 || year%400==0
输入:2000 输出:是闰年 输入:2001 输出:
#include <bits/stdc++.h> using namespace std; int main(){ int year; cin>>year; if(year%4==0 && year%100!=0 || year%400==0){ cout<<"是闰年"; } return 0; }
题目二:判读奇偶数
偶数条件,一个数除以2的余数为0,那么这个数为偶数;否则为奇数
输入:13 输出:奇数 输入:14 输出:偶数
#include <bits/stdc++.h> using namespace std; int main(){ int num; cin>>num; if(num%2==0){ cout<<"偶数"; }else{ cout<<"奇数"; } return 0; }
题目三:判断成绩
如果成绩0~59,那么不及格;如果成绩在60~89,那么及格;
如果成绩在90~100,那么优秀,否则成绩有误。
输入:13 输出:不及格 输入:68 输出:及格 输入:99 输出:优秀 输入:102 输出:成绩有误
#include <bits/stdc++.h> using namespace std; int main(){ int score; cin>>score; if(score>=0&&score<=59){ cout<<"不及格"; }else if(score>=60&&score<=89){ cout<<"及格"; }else if(score>=90&&score<=100){ cout<<"优秀"; }else{ cout<<"成绩有误"; } return 0; }
分支语句---switch
switch(变量/公式){
case 值1 :
任务A;
case 值2 :
任务B;
break;
default:
任务C;
}注意:case和default 后面的符号为冒号:而不是分号 ;
*** switch语法具有穿透性 ***:满足一个条件后,一直向下执行,一直遇到break终止.
#include <bits/stdc++.h> using namespace std; int main(){ int num; cin>>num; switch(num){ case 1: cout<<"A"; break; case 2: cout<<"B"; case 3: cout<<"C"; break; case 4: case 5: case 6: cout<<"D"; break; case 7: cout<<"E"; default: cout<<"F"; } return 0; }输入1时,输出A
输入2时,输出BC (穿透)
输入3时,输出C
输入4时,输出D (穿透)
输入5时,输出D (穿透)
输入6时,输出D
输入7时,输出EF (穿透)
输入其他数时。输出F
格式化输出
printf(格式化字符串,参量表);
格式化字符串
1. 字符串类型,需要加双引号
2. 占位符 %
%d
%ld
%lld
int类型
long类型
long long 类型
%nd:表示准备n个空间,将数字右对齐
%0nd:表示准备n个空间,将数字右对齐,左边补充0
%f
%lf
float类型
double类型
%.nlf:表示保留n位小数 3. 转义字符
\t 制表位 相当于键盘上的Tab键 \n 换行 相当于键盘上的Enter键,或者cout里的<<endl int a = 33; //输出a并换行 printf("%d\n",a); //空5个格,输出a并右对齐 ,换行 printf("%5d\n",a); //空5个格,输出a并右对齐,左边空格补0 ,换行 printf("%05d\n",a); double b = 1.11177; //输出b并换行 printf("%lf\n",b); //保留3位小数后输出(默认四舍五入) printf("%.3lf\n",b);