C语言学习(七)---判断语句和循环语句1

在前面的内容中,我们学习了逻辑运算符、移位操作符、键盘输入函数等相关内容的知识,今天我们继续往下学习,今天的主要内容为,判断语句和循环语句,这些内容将在后续的学习中经常用到,可以说是重中之重,大家务必好好了解和掌握,也正因如此,将会分为两节进行阐述,本次只讲述判断语句与for循环,其余将在下节进行讲解,此外,

从从本节开始,后续内容不在是单独的某个知识的讲解, 将会运用已讲过的知识,所以要对前面的内容足够理解,不会再单独说明已经讲过的内容

话不多说,开整!!!

= 与 ==

在正式进行两个语句介绍之前,现在这里区分两个符号,看到题目你可能有些惊讶,不都是等号吗,难道还有什么区别,这区可大了去了,在c语言中,一个等号与两个等号的含义完全不同:

=: 赋值,比如a=3,是将值为3的数赋给a
==:比较,该操作符为比较两个数值是否相等,如1 ==2 ,那么答案肯定是否

介绍完二者的区别之后,就可以开始本节内容的介绍了。

判断语句

基本使用

在生活中,总会有很多的问题发生,你不可能每个答案都回答的很完美,那么当你遇到一个比较棘手的问题,你就不得不进行判断,然后再进行解决,比如说:今天我去不去工作呢?那么此时就会有两种答案,当然也有两种结果,
1.不去,得,老板发现有你没你都一样,被炒了;
2.去,还是去吧。。
虽然此时才正式的介绍判断语句,但是在上次得内容中其实已经进行了使用,在c语言中,判断语句为if,具体使用方式如下:

if(条件)
{
你要干啥;
}
else if(还有条件)
{
又要干啥
}
//还有?没完了你还
else
{
最后了;
}

上述的框架即为判断语句的使用方法,你可以有很多的条件,只要你想,你的else if可以一直写下去,

下面为示例代码:

#include<stdio.h>
int main()
{
    int i = 0;
    int j = 0;
    scanf("%d%d",&i,&j);
    if (i < j)
        printf("后输入的数字大\n");
        else if (i > j)
        printf("先输入的数字大\n");
        else 
        printf("一样大\n");
    return 0;
}

可以看到此处代码的功能是:判断先输入的和后输入的数字哪个大,输入的数字不同,也将得到不同的结果,如下:
在这里插入图片描述
其余两种自己输入其他数字进行测试吧。

注意事项

{}问题

需要注意的是,

当每个条件下要执行的内容超过一句时,需要用{}括起来,以实现代码块的可读性和可执行性,否则将会报错

上述的代码由于每个条件下的执行命令只有一行,因此,并未加上{},如果有多个执行命令而并未在代码块中,如下所示代码:

#include<stdio.h>
int main()
{
    int i = 0;
    int j = 0;
    scanf("%d%d",&i,&j);
    if (i < j)
        printf("后输入的数字大\n");
        printf("说了你不听");
        else if (i > j)
        printf("先输入的数字大\n");
    else 
        printf("一样大\n");
    return 0;
}

保存编译,结果如下:
在这里插入图片描述
因此,当多条代码要在判断语句内执行时,务必要将其放入{}中。

else的配对

在判断语句中,其中的else只与最近的if进行配对,与其是否位置对应无关,比如上述代码,改为如下图所示样子:
在这里插入图片描述
即使此处的else和最初的if对齐,但是若此时输入4,2,输出的结果应该是先输入的数字大,而不是一样大,大家可以自行验证,因此说:

判断语句中,其中的`else`只与最近的if进行配对

循环语句

什么是循环?什么时候要用到循环呢?既然存在循环,就说明某件事你总是要做,往复的进行。比如:我今天要喝奶茶,我明天还要喝奶茶,后天我也喝,那就说明了喝奶茶对你来说就是一个循环,既然这些的动作是重复的,那么如何在c语言中描述一件总是要执行的事情----就可以用循环来表述。
c语言中,循环有三种,将在此处按照使用的频率进行顺序讲解。分别为

  • for
  • while
  • do while

for循环

c语言中,最为常用的循环形式就是此处的for循环,其主要的使用方式如下:

for (初始化;条件判断;条件调整)
{
你的代码;
}

也就是说,在使用for循环时,最重要的也就是其后面跟着的三个条件,其运行的步骤如下所示:

  • 首先,执行初始化;
  • 其次,判断初始化后的条件是否满足,如果满足则执行你的代码,不满足则退出此循环
  • 随后,代码执行后,进行条件调整;
  • 再对调整后的进行判断,满足则执行,否则退出,循环往复;

用一张图来表示运行过程(化的有点抽象,见谅)如下:
在这里插入图片描述
当代码首次执行时,其按黑色数字1234顺序执行,在此之后的循环,均按红色数字123顺序执行,直到跳出循环为止。
下面以一个示例代码为例:

#include<stdio.h>
int main()
{
    int i = 0;
    for(i=0;i<10;i++)
    {
        printf("%d\n",i);
    }
    return 0;
}

在运行之前,大家可以分析一下结果是什么,大家看看是不是这样一个流程:
在这里插入图片描述
只要i<10,就会把当前的值打印出来,当i=9时,运行完此次代码后加1变为10,不满足条件,所以跳出循环,那么结果显而易见会是:0 1 2 3 4 5 6 7 8 9;运行,果然不出所料
在这里插入图片描述
那个不是没有0哈,是我没截到。既然if判断语句里可以嵌套if,那么for里面能不能嵌套for循环呢,当然可以了,如下

#include<stdio.h>
int main()
{
    int i = 0;
    int j = 0;
    for (i = 0;i<3;i++)
        {
        for(j = 0;j<2;j++)
        {
        printf("%d\n",j);
        }
        printf("%d\n",i);
        }
    return 0;
}

在运行之前,大家可以自己分析一下结果然后再运行,这样有助于大家理解循环,当循环嵌套时

内循环结束,才会重新进行外循环

for循环的终止

如果在循环过程中,我不想要执行了,如何人退出呢,此时就需要了另一条命令:break,当循环遇到此条语句时,结束整个循环,注意是结束整个循环,不是结束本次循环!!!!!
如以下代码,本来是打印0到3的所有数字,但是当i==2 条件满足时,跳出整个循环,也就不会打印后续的3了,因此将会只打印0和1;代码和结果如下所示:

#include<stdio.h>
int main()
{
    int i = 0;
    for (i = 0;i<4;i++)
        {
            if (i == 2)//比较操作符。不是赋值
                break;
            printf("%d\n",i);
        }
    return 0;
}

结果如下:
在这里插入图片描述

for循环中的跳过

上述讲的break为跳出整个循环,那如果我不想循环这次了,但是又不想跳出整个循环,有没有什么办法呢?有的,在c语言中,该功能的实现命令为continue,其功能为跳过此次循环中的后续代码,但不影响后续的循环,如下所示代码:

#include<stdio.h>
int main()
{
    int i = 0;
    int j = 0;
    for (i = 0;i<4;i++)
        {
            if (i == 2)
               continue;
            printf("%d\n",i);
        }
    return 0;
}

此代码与上个代码99%一样,只是break换为了continue,在此代码中,当i=2时,判断语句成立,执行continue,所以跳过本次循环的后续代码,即不打印2,但是循环继续,i=3时,满足循环条件,不满足判断条件,进行打印,因此结果应该为0 1 3,验证如下:
在这里插入图片描述

for循环中的条件省略问题

在for循环中,初始化条件和判断条件可以省略,但不建议省略,因为一旦省略,会出现很多问题,
比如省略初始化条,示例代码如下:

#include<stdio.h>
int main()
{
    int i = 0;
    int j = 0;
    for (i = 0;i<2;i++)
        {
            for(j =0;j<2;j++)
            {
            printf("haha\n");
            }
        printf("gaga\n");
        }
    return 0;
}

此时不省略初始条件,结果如下:
在这里插入图片描述
省略初始条件后,代码如下:

#include<stdio.h>
int main()
{
    int i = 0;
    int j = 0;
    for (;i<2;i++)
        {
            for(;j<2;j++)
            {
            printf("haha\n");
            }
        printf("gaga\n");
        }
    return 0;
}

此时结果为
在这里插入图片描述
可以看到二者的差别很大,省略后的执行过程如下图所示:
在这里插入图片描述
因此,在for循环的过程中,最好不要省略初始化条件和判断条件

上述即为本节的全部内容了,感谢大家的观看,如果方便,谢谢大家点个赞和关注哦!

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

机器 xiaohu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值