编程入门:分支与循环实战指南

分支与循环

        嗯,依旧按照我的学习进度来写博客笔记,分支与循环。

操作符

操作符作为语句中的基础,也是较为简单的部分,这里放到最前面讲。

关系操作符

非常简单,分为六类

<号

小于号

>号

大于号

<=号

小于等于号,中间记得不要打空格,检查检查,上次博主顺手打的空格检查了半天没检查出来,后来才发现的。

>=号

大于等于号,须知同上。

==号

相等运算符,嗯,本人一般用来判断对错,发现了新用法再分享。

!=号

不等运算符,同上。

条件操作符

exp1 ? exp2 : exp3
这之间的  ?  :称为三目操作符,如果exp1为真,那么取exp2计算,;如果exp1为假,那么取exp3计算,建议在各条件之间使用括号区分,更加显而易见。
举个例子
#include <stdio.h>

int main()
{
    int b = 2;
    int a = 0;
    (b = 2) ? (a = 1) : (a = 5);
    printf("%d", a);


    return 0;
}

在这里a的打印结果为1,如果将三目操作符第一项改为(b!=2)那么a的打印结果将为5,很好理解对伐。

逻辑运算符

!号
逻辑取反运算符
举例,若a为真,则!a为假,很简单。
&&号

并且的意思,只有&&号两边都为真,才能为真

类似于python里的and,两边为真才为真

||号

或者的意思,||号的两边只要有一个为真即判定为真

类似于python里的or,一边为真即为真

短路

那么在逻辑运算符下就有短路这么一个需要注意的条件,在物理中,线路被短路了就会跳过后面的用电器,在这里也是如此。

比如&&号,当从左向右判定时,左项已经为,那么整个&&项已经毫无疑问为,那么就不用判定右项,此时右项就被短路了。

||号,当从左向右判定时,左项已经为,那么整个||项已经毫无疑问为,那么就不用判定右项,,同样,此时右项就被短路了。

如何证明?

#include <stdio.h>

int main()
{
    int b = 2;
    int a = 0;
    int c = 5;
    if ((b = 3) && (a = 0) && (c = 5))
        printf("此项为真");
    else
        printf("此项为假");

    return 0;
}

if()中为真时便会打印“此项为真”,但运行的结果却恰恰相反,第一项(b=3)便是错误的,那么整个(b=3)&&(a=0)即为

分支

if语句

if意为如果

if()

语句A;

if的括号中为时,则执行语句A

else意为其他

if()

语句A;

else

语句B;

if()中的括号中为时则执行语句B

这边举一个例子

#include <stdio.h>

int main()
{
        int num = 0;
        scanf("%d", &num);
if(num % 2 == 1)
        printf("%d 是奇数\n", num);
else
        printf("%d 是偶数\n", num);
        return 0;
}

当我们通过scanf输入num后,num进行if的判定,如果除以21即为奇数,打印奇数;如果正好可以被2整除即为偶数,打印偶数。

嵌套

else if的使用使代码的表达更上一层,并且不局限与简单的是与否

这边放出我在学习过程中做的题目,判断年龄段

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
    int a;
    scanf("%d", &age);
    if (age<= 18)
        printf("青少年");
    else if (age <= 30)
        printf("青年");
    else if (age <= 50)
        printf("中年");
    else if (age <= 80)
        printf("老年");
    else
        printf("长寿");

    return 0;
}

可以看到这里使用了三次else if 使得if语句有了五种结果,else if在我的理解中它就是在上一个条件被否定后给出另一种可能进行判定,从而输出。

注意:else只和最近的if配对,而不是对齐的else,如果我们想让某个ifelse配对的话可以借用{}来完成

switch语句

和if语句的嵌套很相似,在某些场景中比if更加简便,但是它的局限性就在于case后只能接整型,这就使得当switch在想表达上文中的年龄段划分略显不足(至少我目前没想到怎么简单解决),switch的经典题目应该是判断礼拜,下面给出一段判断礼拜的代码

#include <stdio.h>

int main()
{
        int day = 0;
        scanf("%d", &day);
switch(day)
    {
        case 1:
        printf("星期⼀\n");
        break;

        case 2:
        printf("星期⼆\n");
        break;

        case 3:
        printf("星期三\n");
        break;

        case 4:
        printf("星期四\n");
        break;

        case 5:
        printf("星期五\n");
        break;

        case 6:
        printf("星期六\n");
        break;

        case 7:
        printf("星期天\n");
        break;

    }
        return 0;
}
在这种简单应用场景中,ifelse if的嵌套显得繁琐且赘余,switch就解决了这个问题。对于break,嗯它就是一个结束,当运行了那个case以后就break跳出
default的使用

类似于if语句中的else,当所有的case都无法成立时就执行default的语句

循环

while语句

当满足while()内为时,while便进行循环,在后续题目中深度讲解

do while循环

直接看例子,使用do-while打印数字1-10

#include <stdio.h>

int main()
{
        int i = 1;
do
    {
        printf("%d ", i);
        i = i + 1;
    }while(i<=10);

        return 0;
}
这里有一个很有意思的点是do while至少会执行一次,即使将while后改为while(i<=0)仍会打印出1

for语句

for(表达式A;表达式B;表达式C)   表达式A一般是初始化循环变量,表达式B进行判断,若为真则将for语句循环,而后执行表达式C

#include <stdio.h>

int main()
{
        int i = 0;
for(i=1; i<=10; i++)
    {
        printf("%d ", i);
    }

        return 0;
}

一个很简单的将i1开始一直打印到10为止,每次都在执行完printf后进行i++,为什么这样说?从反面来看,如果是先i++后打印的话,当i=10时经过i<=10的判断后进行i++,而后printf就会打印出11,所以这并不成立。

break的使用

break一般配合if使用,在while中若是碰到break则会停止整个循环,来看一个例子

#include <stdio.h>

int main()
{
        int i = 1;
        while(i<=10)
        {
        if(i == 5)
        break;

        printf("%d ", i);
        i ++;
        }
        return 0;
}
一个循环将i1自增打印到10,但是当i自增到5时便会触发if判定break,停止循环,输出结果1234。

continue的使用

continue的使用方式和break大差不差,但效果却是天翻地覆,continue会跳过下文重新回到while再次循环,这里将上文的break换成continue看看什么效果。

#include <stdio.h>

int main()
{
        int i = 1;
        while(i<=10)
        {
        if(i == 5)
        continue;

        printf("%d ", i);
        i ++;
        }
        return 0;
}
运行后发现它卡在了1234后,这是因为当i等于5时触发if判定continue,跳过了下文的printfi++,回到while重新循环,但是i仍然为5,陷入死循环。
但是在for中的continuewhilecontinue虽然作用一样,但产出效果完全不一样,看一个对比
#include <stdio.h>

int main()
{
    int i = 1;
    for (i = 1; i <= 10; i++)
    {
        if (i == 5)
            continue;
        printf("%d ", i);
    }
    return 0;
}
for循环中的continue只是跳过了5这一个数字,转而自增后打印6之后的数字,这就是continue不同环境中的区别。
注意:forwhile的括号后面不要加分号,这会让循环到分号便终止了,不会执行后面的语句。
嗯,今天做完了分支与笔记,下一次就该到数组了,非常谢谢你看到了这里,可能有些地方写的不太到到位,敬请斧正,感激不尽。
谢谢大家!
2025年10月20日
xyy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值