第三单元分支结构程序设计
要点总结:
第一课 关系运算符
1.“等于” 与“赋值”的区别
等于:“= =” 赋值:“=”
*2.字符型数据,按照ASCII码字大小进行比较。
例1:int x=6,z=5;
‘x’<‘z’;
解释:因为字符‘x’的ASCII码值小于字符‘z’的ASCII码值,小于关系成立,所以表示式的值为1。
例2: char x,y;
x=‘m’;
y=‘n’;
int n;
n=(‘y’!=‘Y’)+(5>3)+(y-x= =1);
解释:输出3。
***△C++中的字符可以直接比较大小依据就是其对应的ASCII 码值。而且在ASC码中大写字母、小写字母和数字字符都是连续编号的。大小写字母ASCII码值不同。
**3.**运算符优先级:算术运算符:*/%±
关系运算符<,>,<=,>=,==,!= 赋值运算符=
第二课 逻辑运算符
**1.**C++提供了&& (逻辑与)、1(逻辑或)和! (逻辑非)三种逻辑运算符。
2.输出结果为0或1。
**3.**运算符的优先级:第二级:!、+(正)、-(负)、 ++、-- 第四级:+(加)、-(减) 第九级:=、+=、-=、*=、/=. %= (解释:x+=x+a,其中a为给定变量)
**4.**整型数据也可以参与逻辑运算
整型数据在参与逻辑运弹时根据其值是0或非0,分别当作逻辑值“假”或“真”进行处理。
例如:a>b&&2 因为2!=0,在a>b的情况下输出1。
5. 逻辑表达式是“短路计算”
在逻辑表达式的计算过程中,一但能够确定整个表达式的值,就会立刻停止计算。例如,对于“A&& B”,如果已经计算出表达式A为假,那么整个表达式的值肯定为假,于是表达式B就不需要再计算下去了。
例如:a=2;b=3;c=0;
d=(a>b)&&(c=4);
解释:因为a>b不成立,所以d为0.
第三课 if语句
**1.格式一:if(表达式)
语句1;
else
语句2;
表示如果表达式”的值为真(条件成立)执行“语句1”;否则,执行“语句2”。
例如:
if(n <= 5)
cout << n * 300 << endl;
else
cout «< n * 280 << endl;
2.格式二:if( 表达式)
语句;
表示如果“表达式”的值为真(条件成立)、那么执行“语句”;否则什么也不做(else及其后面省略)。
例如:
if(n > 5)
ans=n*280;
cout<<ans<<endl;
第四课 if语句的嵌套 (一般用于解决三种及以上的分支情况)
例1:
if (x<=y)
if (y<=z)
cout << "“YES”<<endl;
else
cout <<“NO”<<endl;
else
cout <<“NO”<<endl;
解释:若满足第一个if,则执行下一个if,否则,则执行最后一个else.
**1.**程序中的else字句总是与离他最近的前面一个if子句配对。
2.为了增强程序的可读性,if else 语句及其嵌套都采用“缩进”对齐格式,让同层的if子句与else子句对齐。
第五课 条件表达式
1.条件表达式格式:0<表达式1>?<表达式2>:<表达式3>
规则为:首先计算表达式1的值,若表达式1的值为真(非0),则只计算表达式2.并
将其结果作为整个表达式的值;否则,只计算表达式3,并将其结果作为整个表达式的值。
例如:
int x = 5,y= 10,z;
z=x>y?x:y;
cout << z << endl;
该条语句输出10
第六课 switch语句 (解决多情况 1.有限个 2.离散数值)
switch 语句的一般格式:switch(表达式){ ({可以不加)
case常量表达式1:语句组1; [break; ]
case常量表达式2:语句组2; [break; ]
case常量表达式n:语句组n; [break; ]
[default:语句组n+1]
}
1.所有case不成立,执行default后面的语句组通常将default放于最后。
例如:
char symbol ;
cin >> symbol;
switch (symbol) {
case‘ /’:cout <<“/”<< endl; break;
default:cout << “Input Invalid!” ;
2.每个case子句的语句组后都没有break语句,也就不能及时跳出swich语句。
3.1) swich后面的表达式,取值只能是整型字符型布尔型或枚举型。case后面的常量表达式,其值类型要与switch后面表达式的类型一致。
**2)**任意两个case后的表达式值必须各不相同,否则将引起歧义。
**3)**语句组可以是一条语句,也可以是一一个复合语句。
4)多个case语句可以共用一组程序。
第七课 分支结构应用举例
典型例题:例2虫子吃苹果。
问题捕述:
小苏买了一箱苹果共有n个,很不幸的是箱子里混进了一条虫子。虫子每x小时能吃掉一1苹果。假设虫子在吃完一一个苹果之前不会吃另一 一个 ,那么经过y小时,这箱苹果中还有多少个苹果没有被虫子吃过?
[输入格式]
一行三个整数,表示n、x、y ,int范围以内,之间用一个空 格隔开。
[输出格式]
一行一个整数, 即所求答案。
**[输入样例]**3 2 1
[输出样例]
2
//p3-7-2
#include
using namespace std;
int main()
int n,x,y;
cin>>n>>x>>y;
int k=y/x;
if(y%x)k++;
if(k<=n) cout<<n-k<<endl;
else cout << 0 << endl;
return 0;
收获:
了解了if 与 switch 的相同与不同,能够较好的区分并且学会了灵活运用if ,switch 结构。为以后编写较难的程序打下了基础。
****感想:****c++与数学类似,需要清晰的思路以及逻辑能力,想要学好这门课,需要在了解基础知识的同时,多动脑,多动手,多思考,融会贯通。或许以数学思维为基础能够更加清晰的弄明白这门课程。