C语言的三大基本结构以及分支语句和循环语句

简介: C语言的三大基本结构以及分支语句和循环语句

C语言的三大基本结构:

C语言的三大基本结构包括顺序结构,选择结构(也叫分支结构),循环结构,顺序结构顾名思义,就是从头到尾,代码一句接一句的执行下来叫做顺序结构,选择结构是指代码有两种或以上不同的执行方向可以选择执行,到某个节点后,会根据一次判断的结果来决定之后向哪一个分支方向执行且只能选择一个方向,循环结构有一个循环体,循环体就是代码,循环执行循环体内的代码直到出循环.

C语言中的语句:

C语言中的语句可分为五类:即表达式语句,函数调用语句,控制语句,复合语句,空语句。其中,控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句,而控制语句又可分为分支语句,循环执行语句以及转向语句,选择结构以及循环结构就要分别用到选择语句和循环语句今天用此博客来谈谈我对分支语句和循环执行语句的理解.

分支语句:

分支语句有两种形式,即if语句和switch语句.

if语句:

先来说下if语句的语法结构,

int main()
{
        int age = 0;
        scanf("%d", &age);
        if (age < 18)
        {
            printf("未成年\n");
        }
}

if(表达式)表示如果表达式为真,则会执行if语句为假则不执行,这是单个if语句的用法.其次,if语句可以有两个或多个分支

int main()
{
        int age = 0;
        scanf("%d", &age);
        if (age < 18)
        {
            printf("未成年\n");
        }
        else
        {
            printf("成年\n");
        }
}

如图所示,我在if语句后加入了else,else语句必须与if配套使用,即当if语句的表达式为真时则执行if语句内的代码而且不执行else语句里的代码,但当if语句的表达式为假时,则只会执行else语句里的代码,例如:当输入的数为20,则屏幕上打印出“成年”

但如果我想在此之上再对年龄段加以细化,那么就可以用到else if语句

int main()
{
    int age = 0;
    scanf("%d", &age);
    if (age < 18)
    {
        printf("未成年\n");
    }
    else if (age <= 30)
        printf("青年");
    else if (age <= 50)
        printf("中老年");
    else if (age <= 90)
        printf("老年");
    else
        printf("身体棒");
}

如图所示,当if语句表达式为假时程序就会顺着代码往下执行,首先对于第一个else if语句的表达式进行判断,如果为真则执行该else if表达式里的代码,如果为假程序再继续往下走以此类推直到执行到else语句,假如此时没有任何分支语句的表达式为真,那么就会执行else语句里的代码。

注意:if语句在使用的时候一般都要加上{}防止出错,因为if语句的被执行语句如果没有加上{},程序默认if语句只能控制一条语句,如图所示

int main()
{
  int a = 1;
  if (a == 0)
    printf("666");
      printf("777");
}

我们原本想要的效果是当if表达式为真时输出666和777,但如果写成这样的形式,不论if表达式是否为真,777都会被输出,因为if语句只能控制一条语句

正确的写法应该是在if语句加上{}如下图

int main()
{
  int a = 1;
  if (a == 0)
  {
    printf("666");
    printf("777");
  }
}

悬空else问题:

到此,大家都该都了解到,else语句必须同if使用相对照,那么如果我写出下面的代码,代码里的else是和哪个if相对照呢?

int main()
{
    int a = 0;
    int b = 2;
    if (a == 1)
        if (b == 2)
        {
            printf("hehe\n");
        }
    else
    {
        printf("haha\n");
    }
    return 0;
}

如果运行程序就会发现,程序不会打印任何东西,需要提醒的是,前文说过,if语句只能控制一条语句,而第一个if语句里的if和else语句算一条语句,由此可以说明,else对应的if并不是第一个if,而是第二个,结论:当出现多个if语句与else匹配时,else会选择与它最近的if语句匹配,但我们可以加上大括号来改变这种匹配。

int main()
{
    int a = 0;
    int b = 2;
    if (a == 1)
    {
        if (b == 2)
        {
            printf("hehe\n");
        }
    }
    else
    {
        printf("haha\n");
    }
    return 0;
}

加上括号后,第二个if已经与else分隔开,因此此时else与第一个if相匹配,运行当前程序则会在屏幕上打印出“haha”。

switch语句:

switch语句的语法结构://switch (整型表达式)

   //{

       //语句项;

   //}

语句项:case 整形常量表达式:    语句;

即switch(整形表达式),括号里面不能放入浮点数,switch语句中表达式的类型只能是:整形和枚举类型

int main()
{
        int day = 0;
        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;
}

这段代码运行结果依据day的值发生改变,day对应的值是几,就会找到与case 整形常量表达式之后的与day的值相同的一项并执行,需要注意的是,在每个case后都要加上break,因为当找到相对应的case语句后,程序会从找到的那个位置开始执行,如果不加break,程序就会按照顺序结构将下面的语句都执行,break语句的实际效果是把语句列表划分为不同的分支部分。此外,如果想要实现好几个值对应一个结果,则可以改写程序如下.

int main()
{
    {
        int day = 0;
        switch (day)
        {
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                printf("weekday\n");
                break;
            case 6:
            case 7:
                printf("weekend\n");
                break;
        }
        return 0;
    }
}
default子句:

如果表达的值与所有的case标签的值都不匹配怎么办?

如果所有的case标签值都不匹配,那么就会执行default语句

int main()
{
    {
        int day = 0;
        switch (day)
        {
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                printf("weekday\n");
                break;
            case 6:
            case 7:
                printf("weekend\n");
                break;
            default:
                printf("输入错了");
                break;
        }
        return 0;
    }
}

该代码day为0,不能与任何一个case相匹配,则就会打印“输入错了”.

循环语句:

循环语句有三类,分别是,for,while,do while.其中for循环是平常最经常使用的循环结构.

for循环:

for循环的语法:for(表达式1; 表达式2; 表达式3) 循环语句;

表达式1:表达式1为初始化部分,用于初始化循环变量的。 表达式2:表达式2为条件判断部分,用于判断循环时候终止。 表达式3:表达式3为调整部分,用于循环条件的调整。

例子:用for循坏打印出1-10

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

表达式1只被执行一次,在循环语句被执行后,先会执行表达式3对变量进行调整,然后再执行表达式2进行判断,如果表达式2为真则再执行循环语句一直循环到表达式2为假出循环。

for循环的变种:for循环中的三个表达式都是可以被省略的

int main()
{
    for (;;)
    {
        printf("hehe\n");
    }
}

如图所示,这样写不会导致编译错误,但因为没有条件判断部分,该程序执行后会死循环.

while循环:

while 语法结构 :while(表达式) 循环语句;即表达式为真则会执行循环语句,执行完之后再去判断表达式真假一直循环直到表达式为假.

例子:使用whlie循环打印1-10

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

do while循环:

do while循环语法:do 循环语句; while(表达式);

do while循环与其他循环不同的是:do while循环不会再在最开始就判断表达式是否为真,而是先执行一次循环语句后再去判断表达式。

例子:使用do while循环打印1-10

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

结尾:本次的分享到此结束,希望我的这篇博客都够对观看的各位有所帮助,我以后会不定期的更新博客,大家可以互相关注点赞共同进步,加油!

目录
相关文章
|
1月前
|
算法 C语言
【C语言程序设计——循环程序设计】求解最大公约数(头歌实践教学平台习题)【合集】
采用欧几里得算法(EuclideanAlgorithm)求解两个正整数的最大公约数。的最大公约数,然后检查最大公约数是否大于1。如果是,就返回1,表示。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。作为新的参数传递进去。这个递归过程会不断进行,直到。有除1以外的公约数;变为0,此时就找到了最大公约数。开始你的任务吧,祝你成功!是否为0,如果是,那么。就是最大公约数,直接返回。
77 18
|
1月前
|
C语言
【C语言程序设计——循环程序设计】统计海军鸣放礼炮声数量(头歌实践教学平台习题)【合集】
有A、B、C三艘军舰同时开始鸣放礼炮各21响。已知A舰每隔5秒1次,B舰每隔6秒放1次,C舰每隔7秒放1次。编程计算观众总共听到几次礼炮声。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。开始你的任务吧,祝你成功!
52 13
|
1月前
|
Serverless C语言
【C语言程序设计——循环程序设计】利用循环求数值 x 的平方根(头歌实践教学平台习题)【合集】
根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码,求解出数值x的平方根;运用迭代公式,编写一个循环程序,求解出数值x的平方根。注意:不能直接用平方根公式/函数求解本题!开始你的任务吧,祝你成功!​ 相关知识 求平方根的迭代公式 绝对值函数fabs() 循环语句 一、求平方根的迭代公式 1.原理 在C语言中,求一个数的平方根可以使用牛顿迭代法。对于方程(为要求平方根的数),设是的第n次近似值,牛顿迭代公式为。 其基本思想是从一个初始近似值开始,通过不断迭代这个公式,使得越来越接近。
57 18
|
1月前
|
存储 安全 C语言
【C语言程序设计——选择结构程序设计】预测你的身高(头歌实践教学平台习题)【合集】
分支的语句,这可能不是预期的行为,这种现象被称为“case穿透”,在某些特定情况下可以利用这一特性来简化代码,但在大多数情况下,需要谨慎使用。编写一个程序,该程序需输入个人数据,进而预测其成年后的身高。根据提示,在右侧编辑器补充代码,计算并输出最终预测的身高。分支下的语句,提示用户输入无效。常量的值必须是唯一的,且在同一个。语句的作用至关重要,如果遗漏。开始你的任务吧,祝你成功!,程序将会继续执行下一个。常量都不匹配,就会执行。来确保程序的正确性。
71 10
|
1月前
|
小程序 C语言
【C语言程序设计——基础】顺序结构程序设计(头歌实践教学平台习题)【合集】
目录 任务描述 相关知识 编程要求 测试说明 我的通关代码: 测试结果: 任务描述 相关知识 编程编写一个程序,从键盘输入3个变量的值,例如a=5,b=6,c=7,然后将3个变量的值进行交换,使得a=6,b=7,c=5。面积=sqrt(s(s−a)(s−b)(s−c)),s=(a+b+c)/2。使用输入函数获取半径,格式指示符与数据类型一致,实验一下,不一致会如何。根据提示,在右侧编辑器补充代码,计算并输出圆的周长和面积。
40 10
|
1月前
|
存储 C语言
【C语言程序设计——循环程序设计】利用数列的累加和求 sinx(头歌实践教学平台习题)【合集】
项的累加和,一般会使用循环结构,在每次循环中计算出当前项的值(可能基于通项公式或者递推关系),然后累加到一个用于存储累加和的变量中。在C语言中推导数列中的某一项,通常需要依据数列给定的通项公式或者前后项之间的递推关系来实现。例如,对于一个简单的等差数列,其通项公式为。的级数,其每一项之间存在特定的递推关系(后项的分子是其前项的分子乘上。,计算sinx的值,直到最后一项的绝对值小于。为项数),就可以通过代码来计算出指定项的值。对于更复杂的数列,像题目中涉及的用于近似计算。开始你的任务吧,祝你成功!
51 6
|
1月前
|
C语言
【C语言程序设计——循环程序设计】鸡兔同笼问题(头歌实践教学平台习题)【合集】
本教程介绍了循环控制和跳转语句的使用,包括 `for`、`while` 和 `do-while` 循环,以及 `break` 和 `continue` 语句。通过示例代码详细讲解了这些语句的应用场景,并展示了如何使用循环嵌套解决复杂问题,如计算最大公因数和模拟游戏关卡选择。最后,通过鸡兔同笼问题演示了穷举法编程的实际应用。文中还提供了编程要求、测试说明及通关代码,帮助读者掌握相关知识并完成任务。 任务描述:根据给定条件,编写程序计算鸡和兔的数量。鸡有1个头2只脚,兔子有1个头4只脚。
57 5
|
1月前
|
存储 编译器 C语言
【C语言程序设计——选择结构程序设计】求一元二次方程的根(头歌实践教学平台习题)【合集】
本任务要求根据求根公式计算并输出一元二次方程的两个实根,精确到小数点后两位。若方程无实根,则输出提示信息。主要内容包括: - **任务描述**:使用求根公式计算一元二次方程的实根。 - **相关知识**:掌握 `sqrt()` 函数的基本使用方法,判断方程是否有实根。 - **编程要求**:根据输入的系数,计算并输出方程的根或提示无实根。 - **测试说明**:提供两组测试数据及预期输出,确保代码正确性。 - **通关代码**:包含完整的 C 语言代码示例,实现上述功能。 通过本任务,你将学会如何处理一元二次方程的求解问题,并熟悉 `sqrt()` 函数的使用。
32 5
|
1月前
|
存储 算法 安全
【C语言程序设计——选择结构程序设计】按从小到大排序三个数(头歌实践教学平台习题)【合集】
本任务要求从键盘输入三个数,并按从小到大的顺序排序后输出。主要内容包括: - **任务描述**:实现三个数的排序并输出。 - **编程要求**:根据提示在编辑器中补充代码。 - **相关知识**: - 选择结构(if、if-else、switch) - 主要语句类型(条件语句) - 比较操作与交换操作 - **测试说明**:提供两组测试数据及预期输出。 - **通关代码**:完整代码示例。 - **测试结果**:展示测试通过的结果。 通过本任务,你将掌握基本的选择结构和排序算法的应用。祝你成功!
36 4
|
1月前
|
存储 算法 安全
【C语言程序设计——选择结构程序设计】求阶跃函数的值(头歌实践教学平台习题)【合集】
本任务要求输入x的值,计算并输出特定阶跃函数的结果。主要内容包括: 1. **选择结构基本概念**:介绍if、if-else、switch语句。 2. **主要语句类型**:详细解释if、if-else、switch语句的使用方法。 3. **跃迁函数中变量的取值范围**:说明如何根据条件判断变量范围。 4. **计算阶跃函数的值**:通过示例展示如何根据给定条件计算函数值。 编程要求:在右侧编辑器Begin-End之间补充代码,实现阶跃函数的计算和输出。测试说明提供了多个输入及其预期输出,确保代码正确性。最后提供通关代码和测试结果,帮助理解整个过程。
33 0

热门文章

最新文章

相关实验场景

更多