四.运算符
逻辑运算符(继续上一博客内容)
1.逻辑表达式:由逻辑运算符连接起来的表达式,其运算结果是一个逻辑值“真”或“假”。
2.名称
逻辑与:&&
逻辑或:||
逻辑非:!
3.运算规则
①逻辑非
A !A | A !A
0 1 | 1 0
②逻辑与
A B A&&B | A B A&&B
0 0 0 1 0 0
0 1 0 | 1 1 1
③逻辑或
A B A||B | A B A||B
0 0 0 1 0 1
0 1 1 1 1 1
五.分支结构程序设计
1.if语句
①if的两种格式:
1).if(表达式 )
语句1;
else
语句2;
2).if(表达式)
语句;
注:1(针对表达式2)表达式的值为真(条件成立),那么执行“语句”;否则,什么也不做(else及其后面省略)。
②if语句的嵌套
1).分支结构可以嵌套很多层
2)一个程序中可能会出现很多的if和else子句,则else子句总是与离他最近的前面的if子句配对。
注:1)为了增强程序的可读性,if…else…语句及其嵌套都采用“缩进”对齐格式,让同层的if子句与else子句对齐。
例
if(x<=y)
if(y<=z)
cout<<“YES”<<endl;
else
cout<<“NO”<<endl;
注:1)复合语句:用{}将一组语句括起来,这些括起来的语句组称为“复合语句”。
例
#include
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;
}
2.switch语句
①介绍:在一些实际问题中,分类情况特别多,如果用if语句嵌套实现,层数太多,容易出错。为此C++提供了一种多分支语句——switch。
②switch格式
switch(表达式){
case 常量表达式1:语句组1;[break;]
case 常量表达式2:语句组2;[break;]
…
case 常量表达式n:语句组n;[break;]
[default:语句组n+1]
}
执行规则:先计算表达式的值,然后从前往后依次与case子句中所列出的各种常量表达式的值进行比较,若表达式的值与常量的值相等,就开始进入相应的case后面的语句组执行,遇到后面的case也不再进行判断(默认匹配),直至遇到break语句或switch语句结束。default表示表达式与所有常量表达式的值都不匹配,那么执行其后面的语句组,通常将default放在最后。如果表达式与各分支常量的值都不匹配时,不需要执行任何语句,则default可以省略。
switch语句需注意:
1)switch后面的表达式,取值只能是整型、字符型、布尔型、或枚举型。case后面的常量表达式,其值类型要与switch后面的表达式的类型一致。
2)任意两个case后的表达式必须各不相同,否则讲引起歧义。
3)语句组可以是一条语句,也可以是一个复合语句。
4)多个case语句可以共用一组程序。
例:
#include
using namespace std;
int main(){
char ch;
cin>>ch;
switch(ch){
case ‘A’:
case ‘B’:
case ‘C’:cout<<“Pass”<<endl;break;
}
}
注:if和switch可以相互嵌套使用。
注:1)一般来说,产生a~b之间的随机整数可以表示为a+rand()%(b-a+1)。
2)C++中函数rand()返回[0,RAND_MAX]之间的随机整数,其中rand_max一般为32767。但是rand()之前一般先设置“随机种子”,通常可以用rand(time(0))来实现。
3)函数rand()和srand()需要包含“cstdlib”头文件,函数time()需要包含“ctime”头文件。
例
六循环结构程序设计
1.while语句
1.介绍:在程序设计中,经常需要反复执行某一条语句或一个语句块,这种结构称为“循环结构”或“重复结构”。
2.循环结构有三种实现语句:while语句,do—while语句和for语句。
3.while语句格式:
while(表达式) {
循环体
}
含义:先计算表达式(一般称为循环条件)的值,当表达式的值为真(循环条件成立)时,去执行一次循环体。和if语句不同的是,执行完一次循环体后,while语句又回到开始处,继续计算和表达式的真假,决定是否再次执行循环体。也就是"当表达式成立时,不断重复执行循环体",所以又称为"当型循环"
感想及收获:
c++已经快要学习了一半,通过课下练习及课上训练,已经可以自己编写出简单程序来,但多多少少存在细节上的问题,而且在编写程序时总是会出现粗心的问题,自己无法发现。老师课上讲的内容,课下无法做到及时复习,最严重的问题是课上老师多次强调的问题和细节,自己无法做到总结和内化。
自己以前的学习方法不适合现有的课程及和内容,但经过三个月的大学生活,学习方法也改进了不少。c++的学习我感觉是前后贯通的,前面会涉及后面的知识,后面的又包含前面的内容,学习的越多,前面不懂的知识也会相应的得到解决和完善。
希望接下来的学习,自己能更加努力。