C语言学习笔记(四)循环与分支语句

前言

       为了更好地解决实际生活中出现的问题,C语言提供了循环语句和分支语句。几乎所有的问题都可以用循环和分支语句的逻辑来表达和解决。快来看看如何用C语言输出乘法口诀表把!

 


一、分支语句

       分支语句的出现主要是为了应对条件判断,在我们日常生活中有很多这样的判断,例如:“如果今天下雨,我就不去公园了。”这样一句话中就存在一个条件判断,若满足“下雨”这个条件,那么就实现后面的“不去公园”。分支语句就可以解决C语言中类似的问题。

1.if语句

       if语句是C语言中使用较多的分支语句,当我们需要在某一条件下执行某行代码时,即可用到if语句。例如,当'a'等于1时,输出"helloworld"即可用到以下代码

#include<stdio.h>

int main()
{
    int a = 0;
    scanf("%d",&a);
    if(a == 1)
    {
         printf("helloworld\n");   
    }
    return 0;
}

       当我们输入1时,if语句判断a等于1,则执行if语句内的代码。图中的if后的括号中为判断条件,若满足该条件则执行if语句内的代码,若不满足则直接跳过。当然,单独的一句if只能面对一种情况,在面对复杂的问题时显得较为无力,在if语句中还存在另外两种语句,分别是else if和else。我们继续看下面的代码

#include<stdio.h>

int main()
{
    int a = 0;
    scanf("%d",&a);
    if(a > 0)
    {
         printf("helloworld\n");   
    }
    else if(a<0)
    {
         printf("helloCSDN\n");
    }
    else
    {
         printf("hellocode\n");
    }
    return 0;
}

       根据前面所介绍的if语句的用法可知,当我们输入大于0的数时,该代码输出"helloworld",那么如果不大于0,将会进入else if和else语句的判断。else表示与前面的条件不同,例如"else if(a<0)",首先,a满足前提"a<=0",其次,a满足"a<0"即进入else if语句,输出"helloCSDN",那么如果前面的条件都不满足,则进入else,在该代码中当a等于0时输出"hellocode"。在if语句中,只有if是必须出现的,else if的使用没有次数限制。

      if语句还可以嵌套使用,当我们需要进行多层判断时,可使用if语句的嵌套,例如

#include<stdio.h>

int main()
{
    int a = 0;
    scanf("%d",&a);
    if(a>0)
    {
         if(a>2)
         printf("helloworld\n");
         else
         printf("helloCSDN\n");   
    }
    return 0;
}

      这里首先判断的是a>0,当a>0时,再判断a是否大于2,若大于2输出"hellowworld",若不大于2输出"helloCSDN"。关于这段代码中嵌套的if语句后面未加大括号,这种写法也是可行的,当if语句后未加大括号时,满足条件时执行if语句后的一条代码。但我不提倡这种写法,这会让代码显得很凌乱,不容易让人读懂,也不便于寻找bug。

2.switch语句

       switch语句用于针对单个变量的不同取值执行不同代码,例如

#include<stdio.h>

int main()
{
    int d = 0;
    printf("what day is it today?\n");
    scanf("%d",&d);
    switch(d)
    {
         case 1:
         case 2:
         case 3:
         case 4:
         case 5:printf("weekday\n");break;
         case 6:
         case 7:printf("weekend\n");break;
         default:printf("error\n");break;
    }
    return 0;
}

      图中代码可用于判断给出的日子是否为工作日,case后的数字对应d的取值,当d为1时,从case 1开始一直向下执行,直到switch语句的最后一行或者遇到break语句。图中case 5后有break语句,故输入1后,从case 1向下执行至case 5后的break结束。那么输入2~7之间的其它数字也是同理。当输入的数字不在2~7之间,即当我们输入n时,switch语句中没有case n,则执行default语句后的代码。需要注意的是,switch语句中的case和default语句位置不固定,case5可以在case1之前,default也可以在case2之前,这些语句的位置根据需求确定。

二、循环语句

1.while语句

      while语句是最简单的循环语句,他的写法与if语句相似,执行方式也与if语句相似,不同点在于while语句会重复执行。当然,如果我们不对循环加以限制,那么极有可能写出死循环,最简单的死循环如下

#include<stdio.h>

int main()
{
    while(1)
    {
         printf("6\n");
    }
    return 0;
}

       这里补充一点,在C语言判断逻辑真假时,0为假,非0为真。while后面的判断中为1,1为真,所以循环为死循环。而后面的判断条件其实是用来限制循环次数,避免死循环的。我们来看以下代码

#include<stdio.h>

int main()
{
    int i = 0;
    while(i<10)
    {
        printf("%d\n",i);
        i++;
    }

    return 0;
}

       在这段代码中,循环每进行一次,i的值加一,那么当i等于10时,条件i<10不成立,则跳出循环,故程序打印数字0~9。

2.for循环

        for循环是最常用的的循环语句可以说是while循环的美化版。我们来看以下代码

#include<stdio.h>

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

        这段代码的执行效果和上面的while循环是一样的,打印0~9。我们来分析一下for循环后面的结构。括号内分为三部分,用分号隔开,第一部分为起始条件,即i=0,第二部分为循环条件,当i<10时满足条件,那么接下来执行循环体内的代码,即printf函数,循环体内容执行后执行括号内第三部分的语句,即i++。我们发现,我们用变量"i"来控制循环发生的次数,我们把"i"称为循环变量。

3.do while语句

       do while语句的使用较少,与while语句的不同在于,do while语句的判断部分在循环体之后,即在循环发生后再判断循环是否继续发生。接下来我们来看这段输出0~9的代码用do while语句如何实现

#include<stdio.h>

int main()
{
    int i = 0;
    do
    {
         printf("%d\n",i);
         i++;
    }wwhile(i<10);
    return 0;
}

        在执行完一次循环体后,while语句判断为真则继续循环,若为假则跳出循环。那么当"i"等于9时再循环一次,然后''i''等于10,跳出循环。

4.嵌套循环

        嵌套循环,即循环中还有循环,遇到这种情况代码还是按照正常顺序执行,我们来分析这段代码

#include<stdio.h>

int main()
{
    int i = 0;
    int j = 0;
    for(i=0;i<10;i++)
    {
        for(j=0;j<10;j++)
        printf("%d %d\n",i,j);
    }
    return 0;
}

        首先,满足外层循环条件,进入外层循环,然后满足内层循环条件,进入内层循环。当内层循环执行完毕之后,外层循环执行"i++",还是满足外层循环条件,继续执行,以此类推,该段代码将会打印"0 0"~"9 9"。接下来我们来看看嵌套循环的简单运用——乘法口诀表

        首先我们来分析,乘法口诀表共有九行九列,那么我们需要两个循环变量分别用来控制行数和列数,那么我们可以分别用变量"i"和"j"来控制行和列。观察发现,第n列的算式的第一个因数为n,第n行的算式第二个因数为n,那么每次打印一个算式时,我们都可以用它的行数和列数来表示它。我们先写出控制行的循环如下

#include<stdio.h>

int main()
{
    int i = 0;
    int j = 0;
    for(i=1;i<10;i++)
    {
        printf("\n");
    }
    return 0;
}

       如此,控制行数为9,而每一行的行数和列数相等,所以可以用行数来限制列数,再将各个算式打印,如下

#include<stdio.h>

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

        这样一来,一个简单的乘法口诀表就完成了。


结尾

        分支和循环语句是C语言非常重要的组成部分,希望大家都能够熟练掌握。

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值