标题 分支结构程序设计单元总结
一:单元知识点及难点
第一课 关系运算符
>=
为大于等于 <=为小于等于 ==
为等于 !=为不等于
关系表达式的结果为逻辑值真(非0值)或假(0)
例如:1==2 表达式的结果为0
1!=2表达式的结果为1
第二课 逻辑运算符
’&&逻辑与 (双目运算符)||逻辑或(双目运算符) !逻辑非 (单目运算符)
逻辑运算符也存在优先级,注意区分!!
整型数据也可参与逻辑运算
整型数据在参与逻辑运算时根据其值是0或非0,分别当做逻辑值“假”或“真”进行处理。
尤其注意逻辑表达式中的“短路计算”,在逻辑表达式中一旦确定整个表达式的值,就会立刻停止计算。
#include<iostream>
using namespace std;
int main (){
int a,b,c,d;
a=2;b=3;c=0;
d=(a>b)&&(c=4);
cout<<d<<" "<<c<<endl;
return 0;
}
比如闰年表达式中运用逻辑运算符:(x%400==0)||((x%4==0)&&(x%100!=0))
第三课 if语句
if语句有两种表达形式
以旅游题目为例;
表达一:
#include<iostream>
using namespace std;
int main (){
int n;
cin>>n;
if(n<=5)
cout<<n*300<<endl;
else
cout<<n*280<<endl;
return 0;
}
表达二:
#include<iostream>
using namespace std;
int main (){
int n,b;
cin>>n;
b=n*300;
if(n>5)
b=n*280;
cout<<b<<endl;
return 0;
}
注意复合语句中if条件句的使用
第四课 if语句的嵌套
if语句使用时注意的问题:分支结构可以嵌套很多层;if与else的配对关系;良好的代码风格。
以判断闰年为例:
#include<iostream>
using namespace std;
int main (){
int x;
cin>>x;
if(x%400==0)
cout<<"YES"<<endl;
else
if(x%4==0)
if(x%100!=0)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
else
cout<<"NO"<<endl;
return 0;
}
第五课:条件表达式
格式:<表达式1>?<表达式2>:<表达式3>
运算规则为首先计算表达式1的值,若为真,则计算表达式2,并将其结果作为整个表达式的值,否则只计算表达式3的值,并将其结果作为整个表达式的值。
以判断闰年为例:
#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;
}
第六课:switch语句
一般格式:
switch(表达式){
case常量表达式1:语句组1;【break;】
case常量表达式2:语句组2;【break;】
…
case常量表达式n:语句组n;【break;】
【default:语句组n+1】
}
注意问题:
(1)switch后面的表达式,取值只能是整型,字符型,布尔型或枚举型。case后面的常量表达式,其值类型要与switch后面的表达式类型一致。
(2)任意两个case后的表达式的值必须各不相同,否则将引起歧义。
(3)语句组可以是一条语句,也可以是一个复合语句。
(4)多个case语句可以共用一组程序。
以优惠购物为例:
#include<cstdio>
using namespace std;
int main(){
char id;
float price,discount;
scanf("%c\n",&id);
scanf("%f",&price);
switch(id){
case 'P' :discount=0.7;break;
case 'G' :discount=0.8;break;
case 'S' :discount=0.9;break;
default:discount=0.95;
}
printf("%.2f\n",price*discount);
return 0;
}
第七课分支结构应用举例
以随机函数为例:
#include<cstdio>
#include<cstdlib>
#include<ctime>
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;
}
C++中的rand()函数返回[0,RAND_MAX]之间的随机整数,其中,RAND_MAX一般为32767。但是,在调用rand()之前一般要先设置“随机种子”,通常可以用srand(time(0))来实现。rand()函数和srand()函数需要包含“cstdlib”头文件,time()函数需要包含“ctime”头文件。
一般来说,产生a~b之间的随机整数可以表示为:
a+rand()%(b-a+1).
二:章节易错点整理
1.使用关系运算注意:等于与赋值的区别;实型数据(浮点数)的关系运算;运算的优先级。
2.尤其注意逻辑表达式中的“短路计算”,在逻辑表达式中一旦确定整个表达式的值,就会立刻停止计算。
3.注意复合语句中if条件句的使用。
4.if语句使用时注意的问题:分支结构可以嵌套很多层;if与else的配对关系;良好的代码风格。
5.运算规则为首先计算表达式1的值,若为真,则计算表达式2,并将其结果作为整个表达式的值,否则只计算表达式3的值,并将其结果作为整个表达式的值。
6.任意两个case后的表达式的值必须各不相同,否则将引起歧义。
三:学习中遇到的困难及如何解决
1.做if else语句练习时语句杂多情况下我直接硬写未做必要区分导致结果错误,使我懂得必要时需要用{}括起来做分隔。
2.做章节习题判断闰年时,试过很多语句总是例句正确,提交失败RONG ANSWER,想起老师上课说要把各种极端情况都调试一遍,我又重新看课本理清或与非内涵,试了各种情况,终于通过。
3.做switch语句练习时,漏掉了break,有时还漏掉default,提醒了我一定要细心!!
四,章节学习总体心得
在第一课运算中定义变量int x=6,y=4,z=5则x == x >= y的学习中同时明白了运算级别的顺序。在第二课程序中:体会了假与逻辑与的 逻辑运算,明白了逻辑运算符在实际应用中的含义。学会了if语句的两种格式,同时理解了分支结构和复合语句,明白如何去解决实际问题。理解了if语句的嵌套,明白嵌套原理,尤其注意每个大嵌套中的小嵌套的逻辑顺序,必要时需要用{}括起来做分隔,便于区分。再重复用各种办法写闰年的程序过程中体会了各种方法的表达意义,大体明白了各种方法的注意事项与应用,及如何解决实际问题。理解了switch语句在实际应用中的运算方法。明白分支结构整体框架 学会了运用分支结构去简化问题 学会了用更便捷的方式查找出自己的错误。最后,据老师所讲,要想程序正确,则在调程序时要把极端情况都要调试一遍!