C语言分支循环

本文详细介绍了C语言中的分支结构,包括if-else语句、关系操作符、条件操作符、逻辑操作符以及各种循环结构(如switch、while、for、do-while),并提供了实例和注意事项。还讨论了break和continue的使用以及循环嵌套,最后提到goto语句的罕见使用情况。
摘要由CSDN通过智能技术生成

今天给大家介绍C语言的分支循环,文章中有什么不对的地方可以指出来,纯手打,有可能打太快了,有错别字,希望大家谅解。

目录

1.if语句

2.关系操作符

3.条件操作符

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

5.switch语句

6.while循环

7.for循环

8.do-while循环

9.break和continue语句

10.循环的嵌套

11.goto语句

一.if语句和else

1.if的语法结构

if(表达式)

        语句

注意:在C语言中,0为假,非0为真。

在上述语法结构中,若表达式为真,则执行下面的语句,反之,则不会执行下面的语句。

执行的流程如下:

2.例子

比如我们来判断我们输入的整数是不是偶数

当我们输入16时,%为取余计算,它会显示为偶数

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
int main()
{
    int x;
    printf("请输入一个整数:\n");
    scanf("%d", &x);
    if (x % 2 == 0)
        printf("你输入的数为偶数\n");
    return 0;
}

3.else语法结构

if(表达式)

        语句1

else

        语句2

4.例子

沿用上面的

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
int main()
{
    int x;
    printf("请输入一个整数:\n");
    scanf("%d", &x);
    if (x % 2 == 0)
        printf("你输入的数为偶数\n");
    else
        printf("你输入的数不是偶数\n");
    return 0;
}

5.需要注意的点

(1)默认if和else语句都只控制一条语句

同理else也是如此

如何想控制两条语句,或者多条呢,只需要使用{}将代码括起来即可。如下所示:

(2)嵌套

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
int main()
{
    int x;
    printf("请输入一个整数:\n");
    scanf("%d", &x);
    if (x > 0)
        printf("你输入的数为正整数\n");
    else if (x < 0)
        printf("你输入的数为负整数\n");
    else
        printf("你输入的数为0\n");
    return 0;
}

    上面是嵌套的if语句例子。

(3)悬空else问题

注意:else总是与最近的if匹配

此时,有些同学可能会认为如何x<0会打印呵呵,可是事实是这样吗?

然而输出的结果不是这样,这是因为else会和最近的if相匹配,即如何我们输入1,1,此时就是打印我们的else的内容。

因此我们再写代码的时候,最后养成加{}的习惯。

二.关系操作符

>大于运算符

>=大于等于

<小于

<=小于等于

==相等,注意和=相区别,后者是赋值,前者是用来比较判断的

!=不相等

关系表达式通常返回0和1,表示假和真

最好不要写成0==x,这是不好的习惯

三.条件操作符(三目操作符)

形式如下:

exp1?exp2:exp3

如果exp1为真,取exp2的内容,反之,取exp3的内容

例子如下:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
int main()
{
    int x;
    printf("请输入一个整数:\n");
    scanf("%d", &x);
    int sum = x > 0 ? 1 : 0;
    printf("%d\n", sum);
    return 0;
}

    

四.逻辑操作符

!:逻辑取反

&&:逻辑与,要两边都为真,才为真

||:逻辑或,两侧至少一方为真,即为真

逻辑与,输入80 90时。左侧符合了,看右侧,右侧y=90,大于80了,因此为假,真&&假为假

如果改成||时,结果还是这样吗?

此时可见,明显不是了,因为||表示一侧为真,即为真


逻辑非,示例如下

当我输入1作为x 的值时,!x就表示假,假为0,真为非0

五.switch语句

是一种特殊的if else语句,用于判断条件有多个结果的情况

格式如下:

switch(表达式)

{

        case 值1:

                       (break;)

        case 值2:

                        (break;)

        default:语句

}

注意的是:表达式必须为整形表达式;

                  case后的值,必须是整形常量表达式;

                  case和后面的值之间必须有空格;

                   每个case语句执行完成之后,需要加上break,这样才能跳出switch语句;

                   case语句和default语句是没有顺序要求的,当然我们要养成习惯,通常把default语句放在最后处理;

下面是switch语句使用的例子:

输入一位同学的成绩,输出是优秀(90及以上),还是良好(70及以上),还是合格(60及以上)

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    //默认分数区间在0-100分之间
    int source;
    printf("请输入一个学生的成绩:\n");
    while (scanf("%d", &source) != EOF)
    {
        switch (source / 10)
        {
        case 10:
        case 9:
            printf("优秀\n");
            break;
        case 8:
        case 7:
            printf("良好\n");
            break;
        case 6:
            printf("合格\n");
            break;
        default:
            printf("不及格\n");
            break;
         }
    }
}
    

在没有break 的语句中,会继续往下执行,要是case后面的值输入为浮点数,则会显示错误

另外一种格式,需要注意的是,while (scanf(" %c", &source) != EOF)里面%C前面必须要有个空格,因为调试的时候,回车也算一个字符,错误示例大家可以自行尝试

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    char source;
    printf("请输入一个学生的成绩:\n");
    while (scanf(" %c", &source) != EOF)
    {
        switch (source)
        {
        case 'A':
            printf("优秀\n");
            break;
        case 'B':
            printf("良好\n");
            break;
        case 'C':
            printf("合格\n");
            break;
        default:
            printf("重修去吧,老铁\n");
            break;
         }
    }
}
    

六.while循环

1.语法结构

while(表达式)

        语句;

2.执行流程

        

3.具体例子

利用while在屏幕上打印出1-10

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    int x = 1;
    while (x<=10)
    {
        printf("%d ", x);
        x++;
    }
    return 0;
}
    

七.for循环

1.语法结构

for(表达式1;表达式2;表达式3)

        语句

其中表达式1:循环变量的初始化

        表达式2:循环结束条件的判断

        表达式3:循环变量的调整

2.执行顺序

3.具体示例

其中表达式1-3均可在括号中省略,但会造成死循环等一系列问题,因此我们写代码最好写上,还有就是{}要加上,不管里面几条语句,最好加上。

找出1-100之间为偶数的数

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    int i;
    for (i = 1; i <= 100; i++)
    {
        if (i % 2 == 0)
            printf("%d ", i);

    }
    return 0;
}

八.do-while循环

1.语法结构

do

        语句

while(表达式);

2.执行顺序

3.具体示例

由执行顺序可知,do下面的语句必定会执行一次,不管条件是否成立

在屏幕上打印1-10


    #define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    int i=1;
    do
    {
        printf("%d ", i);
        i++;
    } while (i <= 10);
}
    

九.break和continue

continue是跳过本次循环continue后面的代码,break则是跳出循环,但是要注意嵌套的循环里面的break就不是直接整个循环都跳出去了,是跳出里面一层。

具体的区别大家可以参考C primer plus或者csdn上查找,找不到的可以评论区留言

十.循环的嵌套

找出100~200之间的素数,并打印在屏幕上。 注:素数⼜称质数,只能被1和本⾝整除的数字。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    int i = 0;
    //循环产⽣100~200的数字
    for (i = 100; i <= 200; i++)
    {
        //判断i是否为素数
        //循环产⽣2~i-1之间的数字
        int j = 0;
        int flag = 1;//假设i是素数
        for (j = 2; j < i; j++)
        {
            if (i % j == 0)
            {
                flag = 0;
                break;
            }
        }
        if (flag == 1)
            printf("%d ", i);
    }
    return 0;
}

十一.goto语句(很少用到)

简单来说就是跳转指令,goto也不能随意使用,会造成程序执行混乱。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    printf("hehe\n");
    goto next;
    printf("haha\n");

next:
    printf("跳过了haha的打印\n");
    return 0;
}

十二.结尾

有些部分可能欠缺,欢迎大家评论区提问。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值