2.数据类型
给变量创造合适的内存空间
前言:本文章的内容都是基于黑马老师的C++课程所写,若有侵权请告知。
目录
2.1整形int
定义变量为实数,如果变量含有小数点则自动去掉小数点只保留实数部分。
短整型 short (-32768~32767)
整形 int (-2^31~2^31-1)
2.2sizeof关键字
作用:统计数据类型占的内存大小。
用法:sizeof(数据类型/变量)
2.3实型(浮点型)
1.单精度 float 四字节 七位有效数字
2.双精度 double 八字节 15~16位有效数字,默认情况下最多会显示6位有效数字
2.4转义字符
作用:用于表示一些不能显示出来的ASCII字符。如<">号的表示为<\">
\n 换行 等效于endl;
\\ 反斜杠
\t 水平制表符
2.5字符串型
作用:用于表示一串数字
表示方法:
1.C语言: char [变量名] = "abc";
2.C++: string 变量名 = “abc” //使用时需要包涵#include<string>头文件
2.6布尔类型 bool
作用:布尔数据类型代表真或假的值。
true 真 本质是1
false 假 本质是0
任何不为0的数都为1
2.7数据的输入
作用:用于从键盘获取数据
语法:cin>> 变量;
3.运算符
用于代码的运算
3.1算数运算符
1.加减乘除运算
+、-
*、/ 运算优先级较高,当用/运算时,被除数为0时程序无法运行
2.取模运算
% 取模 10%3=1 当除数和被除数为两个小数是不能取模
++ 前置递增 ++a 让变量a+1 先让变量a+1,再进行表达式的运算
++ 后置递增 b++ 让变量b+1 先让表达式运算,再让变量+1
3.2赋值运算符
作用:用于将表达式的值赋值给变量
a+=2 == a = a+2
a-=2 == a = a-2
a*=2 == a = a*2
a/=2 == a = a/2
a%=2 == a = a%2
3.3比较运算符
== 相等于 4==3 结果为0
!= 不相等 4!=3 结果为1
>= 大于等于
<= 小于等于
> 大于
< 小于
3.4逻辑运算符
【在C++中,除了0都为真】
! 非 !a 若a为真,!a为假
&& 与 a&&b 若a和b都为真,结果为真,只要有一个假就为假
|| 或 a||b 若a和b有一个为真,结果为真,二者为假时,结果为假
4.程序流程结构
顺序结构、选择结构、循环结构
4.1选择结构
4.1.1if语句
作用:执行满足条件的语句
形式:
1.单行格式if语句:if(条件)
2.多行格式if语句:
if(条件)
{
语句1;
}
else{
语句2;
}
即:如果条件满足执行语句1,不满足执行语句2.
3.多条件if语句
if(条件1)
{
语句1;
}
else if(条件2)
{
语句2;
}
.....
else
{
语句n;
}
应用案例:
#include<iostream>
using namespace std;
int main() {
int score = 0;
cout<<"请输入你的分数:"<<endl;
cin>>score;
cout<<"您输入的分数为:"<<score<<endl;
if(score >= 600) //如果大于600分,执行下方大括号内容
{
cout<<"恭喜你考上了一本大学"<<endl;
}
else if(score>=500&&score<600)
{
cout<<"您上了二本大学"<<endl;
}
else if(score>=400&&score<500)
{
cout<<"您上了三本大学"<<endl;
}
else //如果以上的条件都未满足则执行下方语句
{
cout<<"您未考上大学"<<endl;
}
system("pause");
return 0;
}
4.嵌套if语句
if(条件1)
{
if(条件2)
{
.....
}
else if(条件3)
{
....
}
}
使用多嵌套if语句可以得出更加精准的条件
4.1.2三目运算符
语法:表达式1?表达式2:表达式3
如果1位真,执行表达式2的语句,为假则执行表达式3的语句
应用:创建三个变量a、b、c,将a、b作比较,将变量大的赋值给b
int a = 10;
int b = 20;
int c = 0;
c = (a > b ? a : b)
注意:三目运算符放的是变量,可以继续赋值
(a>b?a:b)=100;//如果a>b,把100赋值给a,反之赋值给b
4.13switch语句
作用:执行多条分支语句
语法:
switch(表达式)
{
case 结果1:执行语句;break;
case 结果2:执行语句;break;
...
default 执行语句;break;
}
实例:
switch (score)// 以用户输入的score分数的多少来判断电影的层次,层次可以按需求分成几类。
{
case 10:
cout<<"您认为是经典电影"<<endl;
break;
case 9:
cout<<"您认为是经典电影"<<endl;
break;
default :
...;
break;
}
缺点:switch的缺点是它判断时只能是整形或者字符型,不可以是一个区间,所以局限性很大
优点:结构清晰,执行效率高。
4.2.1while循环语句
作用:满足循环条件,执行循环语句
语法:
while(循环条件)
{
循环语句;
}
因为while语句只要条件为真就会一直循环,所以设置循环条件时也要有退出循环的出口。
4.2.2do...while循环语句
语法:
do
{
循环语句;
}
while(循环条件)
do...while和while语句的区别在于do...while会先执行一次循环语句;而while会先判断条件再执行语句。
实例:
水仙花数:指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。
获取个位数:153%10 = 3
获取十位数:(153/10)%10 = 5
获取百位数:153/10 = 1
#include<iostream>
#include<math.h>
using namespace std;
int main() {
int j = 100;//三位数为100~999
do
{
int a = j/100;
int b = (j/10)%10;
int c = j%10;
if(a*a*a+b*b*b+c*c*c==j){
cout<<j<<endl;
}
j++;//执行一次语句后j+1,从100到999全部走一遍,判断是否有满足条件的数字,如果有用cout输出
} while (j<1000);
system("pause");
return 0;
}
4.2.3for循环语句
作用:满足循环条件,执行循环语句
语法:
for(起始表达式;条件表达式;末尾循环体){循环语句;}
先执行起始表达式,再判断条件表达式,满足条件时运行循环语句,再执行末尾循环体
实例:
for (int i = 0; i < 10; i++)
{
cout<<i<<endl;
}
优点:结构清晰
案例:敲桌子
从1开始数到数字100,如果个位数含有七,或者数字十位含有七,或者是七的倍数,我们打印敲桌子,其余数字直接打印输出。
#include<iostream>
using namespace std;
int main() {
for (int i = 0; i < 101; i++)//打印1~100个数字
{
if(i/10==7||i%10==7||i%7==0){ //个位数、十位数、七的倍数时敲桌子
cout<<"敲桌子"<<endl;
}
else//不然打印数字
{
cout<<i<<endl;
}
}
system("pause");
return 0;
}
4.2.4嵌套循环
作用:在循环体中再循环一层循环,解决一些实际问题
for(int i = 0;i < 10;i++){ //利用嵌套循环实现星图,一般外层为i,内层为j
for (int j = 0; j < 10; j++)
{
cout<<"* ";
//若cout中包涵i,该i就近原则,指的是嵌套中的i
}
cout<<endl;
}
注意:若内外两层循环都用i作为变量,则cout语句中的i会根据就近原则选取最近一层层i所代表的数字。
案例:九九循环表
int main() {//列数*行数 = 计算结果
for (int i = 1; i <= 9; i++)//打印行数
{
for (int j = 1; j <= i; j++)//列数
{
cout<<i<<"*"<<j<<"="<<i*j<<" ";//实现i*j=...
}
cout<<endl;
}
system("pause");
return 0;
}
4.3跳转语句
4.3.1break语句
作用:用于跳出循环结构或者选择结构
作用时机:
1.出现在switch条件语句,作用是终止case并跳出switch
cout<<"请选择副本难度"<<endl;
cout<<"1、普通"<<endl;
cout<<"2、中等"<<endl;
cout<<"3.困难"<<endl;
int select = 0;//创建选择结果的变量
cin>>select;//等待用户输入
swich(select){
case 1:
cout<<"您选择的是普通难度"<<endl;
break;
case 2:
cout<<"您选择的是中等难度"<<endl;
break;//结束当前语句,并退出switch
case 3:
cout<<"您选择的是困难难度"<<endl;
break;
}
2.出现在嵌套循环中,跳出最近的内层循环语句
for(int i = 0;i<10; i++)
{
for(int j = 0; j < 10; j++)
{
if(j == 5)
{
break;//退出内层循环
}
cout<<"*";
}
cout<<endl;
}
3.出现在循环语句中,跳出当前的循环语句
for(int i = 0;i<10;i++){
if(i == 5){//如果i等于5退出循环
break;//退出循环
}
}
4.3.2continue语句
作用:在循环语句中,跳过本次循环中余下尚未执行的语句,执行下一次循环
for (int i = 0; i < 100; i++)
{
//如果是奇数输出,偶数不再输出
if(i%2==0){
continue;//可以筛选条件,可以执行到此就不再执行,执行下一次循环
}
cout<<i<<endl;
}
4.3.3goto语句
作用:无条件跳转语句
语法:goto 标记;
解释:如果标记存在,执行goto语句会跳转至标记。
goto语句可观性不是很强,推荐少用
cout<<"1、xxxx"<<endl;
cout<<"2、xxxx"<<endl;
goto FLAG;
cout<<"3、xxxx"<<endl;
cout<<"4、xxxx"<<endl;
FLAG:
cout<<"5、xxxx"<<endl;
输出为:1、2、5