第三讲:分支和循环(上)

1.if语句

2.关系操作符

3.条件操作符

4.逻辑操作符:&&,||,!

5.switch语句

6.while循环

7.for循环

8.do-while循环

9.break和continue语句

10.循环的嵌套

c语言是程序化的程序设计语言,这里的结构指顺序结构、选择结构、循环结构

1.if语句

1.1 if

if(表达式)

        语句;

表达式成立(为真),语句执行,否则不执行。

表达式为0是假,非0是真。

1.2 else

if(表达式)

        语句1;

else

        语句2;

表达式为真,执行语句1,否则执行语句2

1.3分支中包含多条语句

包含多条语句要用花括号,如果不用,即如图

#include <stdio.h>
int main()
{
    int i;
    scanf("%d",&i);
    if(i>0)
        printf("hehe\n");
        printf("haha");
    return 0;
}

无论i的值是多少,都会打印haha。

应该改为:

#include <stdio.h>
int main()
{
    int i;
    scanf("%d",&i);
    if(i>0)
    {
        printf("hehe\n");
        printf("haha");
    }
    return 0;
}

当i为正数时,才会打印hehe和haha。

1.4 嵌套if

#include <stdio.h>
int main()
{
    int num = 0;
    scanf("%d", &num);
    if (num == 0)
        puts("数字为0");
    else if (num > 0)
        puts("数字是正数");
    else
        puts("数字是负数");

    return 0;
}

橙色部分算一个语句,当num!=0时执行

     if (num > 0)
        puts("数字是正数");
    else
        puts("数字是负数");

当num!=0时,可以将这部分单独看,就容易很多了。

当然,我们也可以将代码改写:

#include <stdio.h>
int main()
{
    int num = 0;
    scanf("%d", &num);
    if (num != 0)
        if (num > 0)
        puts("数字是正数");
    else
        puts("数字是负数");

    else

          puts("数字

是0");
    return 0;
}

用整体法,将橙色看成一个整体。

建议:不建议这么写代码,虽然橙色部分是一个整体,不用花括号,但最好加上,有助于理解。

2.关系操作符

c语言用于比较的表达式,称为“关系表达式”,里面的运算符称为“关系运算符”,主要有以下6个。

< 小于运算符

>大于运算符

>=大于等于运算符

<=小于等于运算符

==相等运算符(注意等于号的数量!)

!=不相等运算符

若关系表达式正确,返回1,否则返回0。

猜猜看结果是什么?

没错,答案是1,因为1<3正确,返回1,1再代替%d,从而可以将1打印在屏幕上!

关系运算符不能连用

举例:

i=3;

j=6;

k=5;

大家可能以为i<j<k是假吧?

我们仔细看看:

i<j<k等价于(i<j)<k

i<j为真,返回1

1<k为真,返回1

所以,i<j<k为真!!!

所以我们应将i<j<k换成i<j&&j<k.

3.条件操作符

条件操作符也叫三目操作符,因为只有一种三目操作符,三目操作符需要三个操作数,形式如下:

exp1?exp2:exp3

exp1为真,执行exp2,所得结果就是exp1?exp2:exp3的结果。

exp1为假,执行exp3,所得结果就是exp1?exp2:exp3的结果。

练习:输入两个数,求最大值。

a=1,b=2,a>b不成立,执行b,结果为b,也就是2.

接下来,我们来看一段好玩的代码,嘿嘿(可以跳过)

先看1<2<3:

1<2为真,返回1

1<3为真,返回1

1<2<3为真,执行1<3<2

1<3为真,返回1

1<2为真,返回1

所以1<3<2的结果是1,所以(1 < 2 < 3) ? (1 < 3 < 2) : (3 < 2 < 5)的结果是1

写这个不是故意刁难大家,我只想告诉你们,写代码要把思路打开,同时适当的大胆一点,有助于我们c语言的学习。

4.逻辑运算符:&&、||、!

!:逻辑取反操作符(改变单个表达式的真假)。

&&:与运算符(两真则真,一假则假)。

||:或运算符(一真则真,两假则假)。

4.1短路

t=1;

t>5&&t<8;

因为t>5为假,所以右边不用判断,都能知道t>5&&t<8为假,故计算机就不判断了,直接出结果,相这样的求值叫短路求值,目的是为了减小计算量。(语言逻辑运算符总是先对左侧表达式求值,再对右边的表达式求值)。

练习:猜猜看会打印什么?

你们是不是这么想的,恭喜你,又错了,a是0,a++后a变为一,但a++表示a+1以前的值,也就是0,所以a++是假,后面不用看,就知道a++ && ++b && d++为假,所以后面就不算了呀。

5.switch语句

形式:

switch(表达式,可以表示负数,但不能是小数)

{

case 0:语句(就算写多个语句也不用{}。)

case 1:语句

............

case (整数,可以是负数):语句

default:

}

注意:default的位置任意,是可以写在第一行的。

switch与break

假设switch后的表达式为1,则从case1开始执行,不遇到break或“}”不停止;

举个例子:

这里的顺序是刻意打乱的,(当然,这是正确的),是为了让你们深刻理解。

这里“语言”就打印不出来了,因为遇到了break。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

INUYACHA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值