c++入门——分支语句

一、算法设计三大结构

算法设计三大结构
顺序执行 —— 一条路走到底
分支语句 —— 岔路口,选择一条路
循环语句 —— 来回来回,执行多次

今天我们来学习分支语句

二、关键字

  1. if

if (条件判断) 若满足则执行;//注意:小括号后面没有分号!!//下一行语句与 if 是否满足条件无关,都会执行;
  1. if - else

if (条件判断) 若满足则执行;
else 否则执行;//注意:else后面不需要加小括号!!//下一行语句与 if 是否满足条件无关,都会执行;
  1. if - else if - ... - else

if (条件判断) 若满足则执行;
elseif (条件判断2) 若满足则执行;
elseif ...//这里可以根据需要,学多个 else if 判断执行语句else 若以上均不满足则执行或也可以省略;
//下一行语句与 if 是否满足条件无关,都会执行;

注意

  1. else 是对上一句 if 的否定,是不需要也不能加括号的;只有 if 后面需要加括号;

  1. if-else 适用于非此即彼的关系,如果不是非此即彼,只需要加 if 即可。

关系运算符

下表显示了 C\C++ 支持的关系运算符。

C\C++ 中,0 表示为假(false);所有非0的数均为真(true)

注意:为真,即整个式子返回 1;否则返回 0。

逻辑运算符

下表显示了 C\C++ 支持的关系逻辑运算符。

短路运算1:如果 x && y 中已知 x 为假,则 y 不会执行

短路运算2:如果 x || y 中已知 x 为真,则 y 不会执行

//如果 j 的个位不是 a,则 cnt 保持不变if (j%10==a && ++cnt==k)
    printf("%d", i);

三、条件判断如何实现

  1. 本质上说,在C++语言中,条件判断语句其实就是一个整数值,我们只关心它是否为 0。

  • 如果整数值为 0,视为假;

  • 如果整数值非 0,视为; 也就是说,5、10000、-1均视为真值,唯独 0 被视为假值

  • 做判断可以用任何表达式计算,以其计算结果为判断依据;

  • 作为关系运算符,C++语言提供了“>, <, >=, <=, ==, !=”几个判断的符号。

注意:C\C++语言中,10 <= n <= 99 是 错误的写法,虽然语法正确,但判断结果不正确。
会先判断 10 <= n 的结果,如果为真,则为 1;如果为假,则为 0;
接着再用这个结果去和 99 作比较,而不论是 1 还是 0,都是小于 99 的,因此,最终结果 永远为 1(真值)
在C\C++语言中永远不要这样使用关系表达式, 正确的写法是:10<=n && n<=99。
必须使用 && 连接两个判断。(表示“或者”的关系时,使用 || 运算符;表示“否定”时,使用 !)
逗号和 && 是不一样的!:逗号作为一个运算符,只返回 最后一个逗号后面式子或变量的值,并不是返回逗号左右两边的与关系运算的结果,也就是说,逗号运算符 并不进行“与”运算!
错误举例1:if (n>=10, n<=99) 只要满足 n<=99 就为真。
错误举例2:if (n>=10, n<=99, n%2==1) 只要满足 n%2==1 就为真。

四、代码块

如果在 if 或者 else 后面要执行的语句很多,我们就可能输入多个以分号结尾的语句,那么程序会把第一句分配给 if 或 else,其余的排除在外。

例如:

#include<stdio.h>intmain(){
    int a = 0, b = 0;
    if (a > 1) a += 5; b += 7;
    printf("%d", b);
    return0;
}
//b += 7; 这句和 if 无任何关系,始终都会执行。

那么,如果我们想要把 b += 7; 这句也放在满足 if 条件的时候执行,有两种做法:

//方法一#include<stdio.h>intmain(){
    int a = 0, b = 0;
    if (a > 1) a += 5, b += 7;//把 a += 5; 的分号改成逗号,两句变成一句printf("%d", b);
    return0;
}
//方法二#include<stdio.h>intmain(){
    int a = 0, b = 0;
    if (a > 1) { a += 5; b += 7; }//用一对大括号将所有语句括起来printf("%d", b);
    return0;
}

如同 main() 后面的大括号一样,一对大括号括起来的所有代码,被视为一个代码块,作为一个整体,如同是一句话。

五、switch 语句

switch 的英文意思是中转或开关,通常在乘车时,中转站被称为 switch,在分支语句中,当我们明确需要一个多叉的分支时,如果每个分支恰好对应一个具体的整数值,我们就可以使用 switch 语句。

switch(op) {//op一定是一个整数类型,可以为char,int,long long等case a: ...; break;//break语句表示从这里直接退出到switch的大括号外case b: ...; break;
   ...
   default: ...; break;//相当于最后一个else,就是所有其他情况
}

switch 语句等同于 if-else if-else 结构,但后者应用范围更广,当分支条件不是具体值,而是取值范围时,就只能使用 if-else if-else 结构了。

如,输入一个实数 x,输出对应的 f(x) 的值:

if (x < 0) puts("-1");
elseif (x < 10) puts("3");
elseputs("5");
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值