Lec2内容讲解

//还是传统的%一下DHX

P1:何为表达式

基础定义

表达式是由操作数和操作符组合而成的语法结构

操作数

操作数是表达式的基本组成部分,它们是表达式中的数据元素,操作数可以是常量、变量、函数调用的返回值,或者也可以是一个表达式

例如:

114514 //一个数
x //一个变量
sqrt(n) //一个带有返回值的函数

操作符

操作符就是阐述了相关的几个操作数关系的运算符,常见的运算符包括算术运算符,比较运算符,逻辑运算符等

算术运算符

+加法
-减法
*乘法
/除法()
%取余(e.g. 8%3=2)
++令单个变量+1
--令单个变量-1

逻辑运算符

&&逻辑与(and)
||逻辑或(or)
!逻辑非(not)

比较运算符(当符合比较条件时返回1,反之则0)

==等于
>=大于等于
<=小于等于
!=不等于
>大于
<小于

表达式的结果(返回值)

将表达式的操作数与操作符进行运算后得到的结果

int x=5;
x++;//x=6
x=x*2+77;//x=89
x=x==1;//x=0

P2:分支结构语句

if语句

一个基本的if语句结构如下

if(执行条件){
    执行的代码;
}

当执行条件得到一个非0值时,执行大括号内的代码,否则不执行,以下是一个例子

if(game==sanguosha){
    cout<<"记得打差评";
}

if-else语句

else语句与if的结构基本相同,但是不需要任何条件,当if语句的条件被满足时,执行if里的代码,当不满足时,执行else里的代码,以下是一个例子

if(duide==1){
    djw=cb;
}
else{
    cb=djw;
}

else if语句

结构如下

if(条件1){
    代码1;
}
else if(条件2){
    代码2;
}
else{
    代码3;
}
/*等效于
if(条件1){
    代码1;
}
else{
    if(条件2){
        代码2;
    }
    else{
        代码3;
    }
}
*/

else if语句是else和if的结合,如上图所示,当条件1被满足时,执行代码1,当条件1不被满足且条件2被满足时,执行代码2,其余情况下,执行代码3

swich语句(进阶)

标准的swich语句格式

switch(选择标准){
    case 条件1:
        代码1;
    case 条件2:
        代码2;
    default:
        代码3;
}//case数量没有上限

swich语句会根据选择标准的值(必须是整数)跳到对应的位置开始执行程序,并一路执行swich语句余下的内容,特别的,当没有符合的条件时,跳转至default执行代码,例子如下

int i=2;
switch (i){
    case 1:
        cout<<"Man!";
    case 2:
        cout<<"What can I say?";
    default:
        cout<<"Mamba out.";
}
//输出内容:What can I say?Mamba out.

条件运算符(进阶)

条件运算符的形式如下

a?b:c

其中a,b,c均为表达式,当a表达式的结果不为零时,该式子以b作为返回值(结果),反之则为c

等效于

if(a){
    ans=b;
}
else{
    ans=c;
}//其中ans为返回值

P3:循环语句

当我们需要执行一段代码很多次时,甚至是不知道多少次时,我们可以使用循环语句来实现同一段代码的多次使用

while循环

while循环分为两种,while循环和do while循环,二者结构如下

while(循环条件){
    循环的代码;
}
//和
do{
    循环的代码;
}while(循环条件)

他们都会在循环条件满足时不断执行循环的代码,二者唯一的区别是while在循环前判断是否满足条件,而do while是在循环后判断

☝强调一下当while内部代码不会改变循环条件时,循环会一直持续,即发生死循环

一个使用while循环的例子

while(x>1){
    if(x%2){
        x=3*x+1;
    }
    else{
        x=x/2;
    }
}
/*
以上代码验证了3x+1猜想
即对于一个奇数,我们将其乘3再+1
对于偶数,我们将其除以2
不断进行该操作,会使得任意一个数最终变成1
*/

for循环

以下是一个for循环的基本结构

for(循环初始化;循环条件;循环后的更新操作){
    循环的代码;
}

循环初始化是在for循环开始前执行的代码,循环条件作用同while循环,循环后的更新操作是在每次执行完循环的代码后执行的操作,一般用于更新循环条件

一个例子

int ans=1;
for(int i=1;i<=10;i++){
    ans=ans*i;
}
printf("%d",ans);
//以上代码计算了10!,即10的阶乘
☝循环初始化,循环条件,循环后的更新操作均可以不填入任何东西,在不填入初始化的情况下,循环前不进行操作,在循环条件为空的情况下,直到循环被其它代码结束前,循环将持续进行(等效于直接填1),循环后的更新操作为空则使得for循环等效于while循环

同样的,for,while,do while三种循环也可以通过一定的操作来等效替代其它两种循环

P4:作业

实际上是让你们拿代码自己试试分支结构语句,摸了 

让你们自己试试写if和else,摸了

不难,提示是使用如下代码结构

if(是9的倍数){
    输出是9的倍数
}
else if(是4的倍数){
    输出是4的倍数
}
else if(是3的倍数){
    输出是3的倍数
}
else{
    输出oops
}

 当然,也可以使用进阶知识swich,甚至条件运算符完成判断,甚至可以做到只用一行判断完成 

用于了解循环结构运作原理及顺序,摸了

 

实际上相当于将作业3的代码化为一个函数,在主程序中加入一个939到945的循环,依次调用函数来完成任务,思路如下

int 判断是否为3,4,9倍数的函数(int i){
    里面基本是作业3的内容
}
int main(){
    for(这里想办法让循环从939跑到945){
        判断函数(i);
        输出结果;
    }
    return 0;
}

 阿巴巴巴,2300多字,要死了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值