本章感受:本章有部分知识点比较难以掌握,如:if和switch语句和条件表达式。且if和switch语句和条件表达式需特别记忆它们的表达式否则用到它们的时候可能会一脸懵逼。而且对于本章分支结构而言它的逻辑连贯性太强了,所以可能会出现写程序时一错错一片的情况。所以就我个人而言作答本章题目时要尽量细心写程序,写程序时不忘考虑分支是否满足条件,是否能连贯起来。对于可能记不清的公式要多拿书翻看。
本章知识点:
算术运算符:* / %
+ -
关系运算符:< > <= >= == !=
赋值运算符:=
注:以上运算符是按照运算优先级由高到低排列
例:#include<iostream>
using namespace std;
int main(){
char x,y;
x='m';
y='n';
int n;
n=x<y;
cout<<n<<endl;
n=x==y-1;
cout<<n<<endl;
n=('y'!='Y')+(5>3)+(y-x==1);
cout<<n<<endl;
return 0;
}
根据例题对运算符的使用和优先级有更好的理解
逻辑非运算规则:A假则输出0而!A则为真输出1
逻辑与运算规则:A与B其中一个为假则A&&B输出0,A与B全为真A&&B才输出1
逻辑或运算规则:A与B其中一个为真则A||B输出1,A与B全为假A||B才输出0
注:算术运算符>&&>||
例1:表示一个在0到100间的数a
解:易错点:不能写为0<a<100 ,而应将其写为a>0&&a<100
例2:int a=0,b=0,c=1,d=1;求a&&b||c&&d
解:根据运算符优先级因为a&&b==0,c&&d==1,0||1==1所以最终结果为1
易错点:短路运算:对于d=(a>b)&&(c=4);如果由(a>b)可以推得d=0之后不再对c赋值
重点:if语句及其嵌套
if语句格式:1.if(表达式)
语句
2.if(表达式)
语句1;
else
语句2;
对于写程序注:不要体现题目中的范围
例1:输入a、b两个整数,如果a>b,则交换a与b的值,再输出a和b的值
#include<iostream>
using namespace std;
int main(){
int a,b,c;
cin>>a>>b;
if(a>b){
c=a;
a=b;
b=c;
}
cout<<a<<""<<b<<endl;
return 0;
}
注:if(a>b){
c=a;
a=b;
b=c;
}此为复合语句
例2:输入三个整数x、y、z,判断其是否满足x<=y<=z。若满足,输出“YES”;否则,输出“NO”。
#include<iostream>
using namespace std;
int main(){
int x,y,z;
cin>>x>>y>>z;
if(x<=y)
if(y<=z)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
else
cout<<"NO"<<endl;
return 0;
}
注:程序中的else子句总是与离它最近的前面一个if子句配对
难懂点1:条件表达式
格式:<表达式1>?<表达式2>:<表达式3>
规则:如果1成立则只计算2并将其结果作为整个表达式的值,如果1不成立则只计算3并将其结果作为整个表达式的值
例:输入某一年份x,判断该年份是否是闰年。是则输出“YES”否则输出“NO”
#include<iostream>
using namespace std;
int main(){
int x
cin>>x
cout<<(x%400==0?"YES":(x%4==0?(x%100!=0?"YES":"NO"):"NO"))<<endl;
return 0;
}
注:对于实数默认为double型
难点2:switch语句
switch一般格式为:
switch(表达式){
case常量表达式1:语句组1;【break;】
case常量表达式2:语句组2;【break;】
...
case常量表达式n:语句组n;【break;】
【default:语句组n+1】
}注1:break为结束的意思 注2:switch一定取离散数据
例:#include<iostream>
using namespace std;
int main(){
char symbol;
cin>>symbol;
switch(symbol){
case'+':cout<<"+"<<endl;
case'-':cout<<"-"<<endl;
case'*':cout<<"*"<<endl;
case'/':cout<<"/"<<endl;
default:cout<<"Input Invalid!";
}
return 0;
}
注:switch后面只能是整型、字符型、布尔型、枚举型、离散型
任意两个case后的表达式值必须个不相同
语句组可以是一条语句,也可以是一个复合语句
多个case语句可以共用一组程序
重点:随机函数:C++中的函数rand()返回【0,RAND_MAX】之间的随机整数,其中,RAND_MAX一般为32767。但是,在调用rand()之前一般要先设置“随机种子”,通常可以用srand(time(0))来实现。函数rand()和srand()需要包含“cstdlib”头文件,函数time()需要包含“ctime”头文件。一般来说,产生a到b之间的随机整数可以表示为a+rand()%(b-a+1)。
例:#include<cstdio>
#include<cstdlib>
#include<cstime>
using namespace std;
int main(){
int a,b,c;
srand(time(0));
int x=1,y=9;
a=x+rand()%(y-x+1);
b=x+rand()%(y-x+1);
x=1;
y=4;
c=x+rand()%(y-x+1);
switch(c){
case 1:printf(%d+%d=%d\n",a,b,a+b);break;
case 2:printf(%d-%d=%d\n",a,b,a-b);break;
case 3:printf(%d*%d=%d\n",a,b,a*b);break;
case 4:printf(%d/%d=%d\n",a,b,a/b);break;
}
return 0;
}