C语言之分支与循环【附6个练习】(一)

简介: C语言之分支与循环【附6个练习】(一)

前言

C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种结构的组合。我们可以使⽤if 、 switch 实现分⽀结构,使⽤ for 、 while 、 do while 实现循环结构。

一、什么是语句?

在我们平时写字中,一句话的结尾是句号,然而正在C语言中一句话的结尾是;

  • 语句可以分为以下五类:

1)表达式语句

2)函数调用语句

3)控制语句

4)复合语句

5)空语句

1.1 表达式语句

下面这个就是表达式语句:

3 + 5;

1.2 函数调用语句

函数调用语句,就是将函数进行使用时调用的语句。

printf("%d\n", a);  
ADD(3, 5);

1.3 控制语句

  • 控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。
  • C语言是由三种结构组成的,有顺序结构选择结构循环结构

可分成以下三类:

  1. 条件判断语句也叫分支语句:if语句、switch语句;
  2. 循环执行语句:do while语句、while语句、for语句;
  3. 转向语句:break语句、goto语句、continue语句、return语句。

1.4 复合语句

  • 复合语句就是被多个扩号括起来的语句
{
    int a = 0;
    int b = 0;
    printf("%d\n", a + b);
    return 0;
}

1.5 空语句

  • 空语句虽然很简单,但是其用途很大:有时候需要一条语句,但这条语句什么都不需要做
  • 例如下面这段代码,我们会后面在字符章节也会详细讲解
while(*dest++ = *src++)
{
    ;
}

二、分支语句(选择结构

  • 分支语句可以为双分支或者多分支。
  • 在C语言中需要知道真假两个概念:非0为真,0为假(注意:正数和负数都是真)
  • 分支语句分为两类if语句,switch语句

2.1 if语句

  • 那么if语句的语法结构是怎么样的?
if(表达式)//表达式为真执行下面的语句
    语句;
//单分支语句
if(表达式)
    语句1;
else
    语句2;
//多分支语句
if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else
    语句3;
  • 单分支练习(输入大于等于18输出为成年人,否则不输出):
#include <stdio.h>#include <stdio.h>
int main()
{
    int age = 0;
    scanf("%d", &age);
    if (age >= 18)
    {
        printf("成年人\n");
    }
}
  • 单分支练习(输入大于等于18输出为成年人,否则输出未成年人):
#include <stdio.h>
int main()
{
    int age = 0;
    scanf("%d", &age);
    if (age >= 18)
    {
        printf("成年人\n");
    }
    else
    {
        printf("未成年\n");
    }
}
  • 多分支练习
#include <stdio.h>
int main()
{
    int age = 0;
    scanf("%d", &age);
    if (age < 18)
    {
        printf("少年\n");
    }
    else if (age >= 18 && age < 30)
    {
        printf("青年\n");
    }
    else if (age >= 30 && age < 50)
    {
        printf("中年\n");
    }
    else if (age >= 50 && age < 80)
    {
        printf("老年\n");
    }
    else
    {
        printf("老寿星\n");
    }
}
2.1.1 悬空else
  • 当你写了这个代码:
#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("hehe\n");
    else
        printf("haha\n");
    return 0;
}
  • 上面那个代码虽然可以运行,但是风格不是很好
#include <stdio.h>
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
   {
        if(b == 2)
       {
            printf("hehe\n");
       }
   }
    else
   {
         printf("haha\n");
   }       
    return 0;
}
  • 这段代码加上了{}使代码变得逻辑更加清楚,要养成更好的代码分格
  • 如何写出一个好的代码呢?

这里我推荐《高质量C/C++编程》,而这本书就写了如何写出好的风格,大家可以看一下

  • 在我们判断是否等于一个变量或者数的时候我们有可能少一个等于号,那么我们怎么避免呢?
//代码1
int num = 1;
if(num == 5)
{
    printf("hehe\n");
}
//代码2
int num = 1;
if(5 == num)
{
    printf("hehe\n");
}

上面的代码哪个比较好?

  • 肯定是代码2,因为在判断是否相等时用两个等于号写,这样反过来写就会避免只写一个等于号,只写一个等于号的话会编译错误,可以及时发现。
2.1.2 练习(1. 判断一个数是否为奇数 2. 输出1-100之间的奇数)
  1. 判断一个数是否为奇数
  • 思路:要判断是不是奇数,那么我们就可以看一个数的余数是不是等于1,如果等于1那么这个数就是奇数,否则就是偶数了
int main()
{
  int n = 0;
  scanf("%d", &n);
  if (n % 2 == 1)
  {
    printf("YES\n");
  }
  else
  {
    printf("NO\n");
  }
  return 0;
}
  1. 输出1-100之间的奇数
  • 思路:要输出1-100之间的奇数,就要产生1~100的数,然后将每个数进行判断是不是奇数然后再输出
  • 我们目前学了while循环,那么我们就用while循环来解决这道题~,后面学到了for循环也可以很简便的写出来

方法一:

#include<stdio.h>
int main()
{
  int i = 1;
  while (i<= 100)//产生1~100的数字
  {
    if(i % 2 ==1)//进行判断是否奇数
      printf("%d ", i);
    i++;
  }
  return 0;
}

方法二:

  • 这个方法的话就有点投机取巧了~~
#include<stdio.h>
int main()
{
  int i = 1;
  while (i <= 100)//产生1~100的数字
  {
    printf("%d ", i);
    //i+=2;
    i = i + 2;//也可以这样写
  }
  return 0;
}

2.2 switch语句

  • switch语句也是一种分支语句,常常用于多分支情况~~

比如:

输入1,输出星期一;

输入2,输出星期二;

输入3,输出星期三;

输入4,输出星期四;

输入5,输出星期五;

输入6,输出星期六;

输入7,输出星期七。

  • 如果写成if…else if…else if…else的情况就很复杂,那我们需要有不一样的语法形式
  • switch语句(支持嵌套使用)
switch(整形表达式)
{
    语句项;
}
  • 而语句项是什么呢?
//是一些case语句:
//如下:
case 整形常量表达式:
    语句;

2.3 switch语句中的break:

  • 在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。
#include <stdio.h>
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;
}
  • 有时候我们的需求变了:
  1. 输入1-5,输出的是“weekday”;
  2. 输入6-7,输出“weekend”
  • 所以我们的代码就应该这样实现了:
include <stdio.h>
//switch代码演示
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;
}
  • 其中break语句的实际效果是把语句列表划分为不同的分支部分。

在这里我推荐一个编程好习惯

  • 在最后一个 case 语句的后面加上一条 break语句。
    (之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break语句~~)

2.4 switch语句中的default子句:

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

default:

  • 写在任何一个 case 标签可以出现的位置。
    当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
  • 所以,每个switch语句中只能出现一条default子句。
    但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。
  • 推荐编程好习惯
  • 在每一个switch语句中都放入一条default语句是一个好习惯,甚至可以在后面加一个break。

2.5 练习

#include <stdio.h>
int main()
{
    int n = 1;
    int m = 2;
    switch (n)
    {
    case 1:
        m++;
    case 2:
        n++;
    case 3:
        switch (n)
        {//switch允许嵌套使用
        case 1:
            n++;
        case 2:
            m++;
            n++;
            break;
        }
    case 4:
        m++;
        break;
    default:
        break;
    }
    printf("m = %d, n = %d\n", m, n);
    return 0;
}

上面这段代码的结果是什么呢?

C语言之分支与循环【附6个练习】(一):https://developer.aliyun.com/article/1426993

目录
打赏
0
0
0
0
7
分享
相关文章
|
1月前
|
C语言分支和循环语句
分支语句由`if-else`构成,用于根据不同条件执行相应代码。`else`会与最近未配对的`if`结合,多个条件可用`else if`实现。若连续使用`if`,各条件互不影响。嵌套结构可在`if`中再加入`if-else`。此外,`switch`语句适用于多分支选择(注意表达式不能为浮点数,`case`后需加`break`)。循环语句包括`for`、`while`和`do...while`,注意`do...while`末尾需加分号。循环中,`break`直接终止循环,`continue`跳过当前循环剩余部分,但`for`的语句三仍会执行,而`while`中位置影响效果。
26 0
|
9月前
|
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
177 5
一文彻底搞清楚C语言的循环语句
本文介绍了C语言中的三种循环语句:`while`、`do-while`和`for`,并详细解释了它们的语法格式、执行流程及应用场景。此外,还讲解了循环控制语句`break`和`continue`的使用方法。希望这些内容能帮助你在编程道路上不断进步,共同成长!
293 0
一文彻底搞清楚C语言的循环语句
|
6月前
|
【C语言程序设计——循环程序设计】枚举法换硬币(头歌实践教学平台习题)【合集】
本文档介绍了编程任务的详细内容,旨在运用枚举法求解硬币等额 - 循环控制语句(`for`、`while`)及跳转语句(`break`、`continue`)的使用。 - 循环嵌套语句的基本概念和应用,如双重`for`循环、`while`嵌套等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台将对编写的代码进行测试,并给出预期输出结果。 5. **通关代码**:提供完整的代码示例,帮助理解并完成任务。 6. **测试结果**:展示代码运行后的实际输出,验证正确性。 文档结构清晰,逐步引导读者掌握循环结构与嵌套的应用,最终实现硬币兑换的程序设计。
105 19
|
6月前
|
【C语言程序设计——循环程序设计】求解最大公约数(头歌实践教学平台习题)【合集】
采用欧几里得算法(EuclideanAlgorithm)求解两个正整数的最大公约数。的最大公约数,然后检查最大公约数是否大于1。如果是,就返回1,表示。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。作为新的参数传递进去。这个递归过程会不断进行,直到。有除1以外的公约数;变为0,此时就找到了最大公约数。开始你的任务吧,祝你成功!是否为0,如果是,那么。就是最大公约数,直接返回。
179 18
【C语言程序设计——循环程序设计】利用循环求数值 x 的平方根(头歌实践教学平台习题)【合集】
根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码,求解出数值x的平方根;运用迭代公式,编写一个循环程序,求解出数值x的平方根。注意:不能直接用平方根公式/函数求解本题!开始你的任务吧,祝你成功!​ 相关知识 求平方根的迭代公式 绝对值函数fabs() 循环语句 一、求平方根的迭代公式 1.原理 在C语言中,求一个数的平方根可以使用牛顿迭代法。对于方程(为要求平方根的数),设是的第n次近似值,牛顿迭代公式为。 其基本思想是从一个初始近似值开始,通过不断迭代这个公式,使得越来越接近。
136 18
|
6月前
|
【C语言程序设计——循环程序设计】统计海军鸣放礼炮声数量(头歌实践教学平台习题)【合集】
有A、B、C三艘军舰同时开始鸣放礼炮各21响。已知A舰每隔5秒1次,B舰每隔6秒放1次,C舰每隔7秒放1次。编程计算观众总共听到几次礼炮声。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。开始你的任务吧,祝你成功!
141 13
|
6月前
|
【C语言程序设计——循环程序设计】利用数列的累加和求 sinx(头歌实践教学平台习题)【合集】
项的累加和,一般会使用循环结构,在每次循环中计算出当前项的值(可能基于通项公式或者递推关系),然后累加到一个用于存储累加和的变量中。在C语言中推导数列中的某一项,通常需要依据数列给定的通项公式或者前后项之间的递推关系来实现。例如,对于一个简单的等差数列,其通项公式为。的级数,其每一项之间存在特定的递推关系(后项的分子是其前项的分子乘上。,计算sinx的值,直到最后一项的绝对值小于。为项数),就可以通过代码来计算出指定项的值。对于更复杂的数列,像题目中涉及的用于近似计算。开始你的任务吧,祝你成功!
168 6
|
6月前
|
【C语言程序设计——循环程序设计】鸡兔同笼问题(头歌实践教学平台习题)【合集】
本教程介绍了循环控制和跳转语句的使用,包括 `for`、`while` 和 `do-while` 循环,以及 `break` 和 `continue` 语句。通过示例代码详细讲解了这些语句的应用场景,并展示了如何使用循环嵌套解决复杂问题,如计算最大公因数和模拟游戏关卡选择。最后,通过鸡兔同笼问题演示了穷举法编程的实际应用。文中还提供了编程要求、测试说明及通关代码,帮助读者掌握相关知识并完成任务。 任务描述:根据给定条件,编写程序计算鸡和兔的数量。鸡有1个头2只脚,兔子有1个头4只脚。
361 5
|
9月前
|
【c语言】分支语句
C语言通过三种基本结构——顺序、选择和循环,构建复杂的程序逻辑。本文主要介绍了C语言的选择结构,即if-else语句及其变体,包括简单的if语句、if-else组合、else if多分支判断、嵌套if以及解决悬空else问题的方法。此外,还详细讲解了逻辑运算符和关系运算符的使用,以及如何利用条件操作符简化逻辑判断。最后,文章对比了if-else与switch语句在实现多分支逻辑时的应用,并解释了switch语句中的break和default关键字的作用。
126 8
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等