C语言——分支语句 and 循环语句1

简介: C语言——分支语句 and 循环语句

1什么是语句?

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

  1. 表达式语句
  2. 函数调用语句
  3. 控制语句
  4. 复合语句
  5. 空语句

接下来给大家介绍的是控制语句。

控制语句用于控制程序的执行刘彻个。以实现程序的各种结构方式(C语言支持三种数据结构:顺序结构、选择结构、循环结构),他们有特定的语句定义符组成,C语言有九种控制语句。

可以分为以下三类:

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


2.分支语句(选择结构

如果你好好学习,校招时哪一个好offer,走上人生巅峰。

如果你不学习,毕业等于失业,回家卖红薯。

这就是选择!


d4342c8b22f34263b226bcb3c8ab0099.png

2.1if语句

什么是if语句呢?语法结构又是怎么样的呢?

语法结构: 
if(表达式)
    语句;
`if(表达式)
    语句1; else
    语句2;
//多分支     if(表达式1)
    语句1; else if(表达式2)
    语句2; else
    语句3;....

举个例子演示一下

例题:输入一个年龄并做判断最终输出结果

#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");
    }
}

解释一下:

如果表达式的结果为真,则语句执行

在C语言中如何表示真假?

0表示假,非0表示真。

如果条件成立,要执行多条语句,应该使用代码块


#include <stdio.h>
int main()
{
  if(表达式)
 {
    语句列表1;
 }
  else
 {
    语句列表2;
 }
  return 0;
}

这里的一堆{ }就是一个代码块。

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;
}

else的匹配: else适合它离的最近的if匹配的。

2.1.2if书写形式的对比

//代码1
if (condition) {
  return x;
}
return y;
//代码2
if (condition)
{
  return x;
}
else
{
  return y;
}
//代码3
int num = 1;
if (num == 5)
{
  printf("hehe\n");
}
//代码4
int num = 1;
if (5 == num)
{
  printf("hehe\n");
}

代码2和代码4更好一点,逻辑更加清晰,不容易出错。


2.2switch语句

stitch语句也是一种分支语句

常用于多分支的情况


输入1,输出星期一

输入2,输出星期二

输入3,输出星期三

输入4,输出星期四

输入5,输出星期五

输入6,输出星期六

输入7,输出星期日


那我写成if...else if ...else if的形式太复杂,switch正好可以解决这种麻烦。


这就是swtich语句:


switch(整型表达式)
{
  语句项;
}

而语句项是什么呢?

//是一些case语句
//如下
case 整型常量表达式:
  语句;

2.2.1在switch语句中的break

在switch语句中,我们没有办法直接实现分支,搭配break使用才能实现真正的分支。

比如:

int main()
{
    int day = 0;
    scanf("%d", &day);
    int n = 2;
    switch (day)
    {
    default:
        printf("选择错误\n");
        break;
    case 1:
        printf("星期1\n");
        break;
    case 2:
        printf("星期2\n");
        break;
    case 3:
        printf("星期3\n");
        break;
    case 4:
        printf("星期4\n");
        break;
    case 5:
        printf("星期5\n");
        break;
    case 6:
        printf("星期6\n");
        break;
    case 7:
        printf("星期天\n");
        break;
    }
    return 0;
}

假如我们的需求变了:

输入1-5,输出的是“工作日”;

输入6-7,输出“休息日”

所以我们的代码就应该这样子实现

int main()
{
    int day = 0;
    scanf("%d", &day);
    int n = 2;
    switch (day)
    {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        printf("工作日\n");
        break;
    case 6:
    case 7:
        printf("休息日\n");
        break;
    default:
        printf("选择错误\n");
        break;
    }
    return 0;
}

break语句的实际效果就是把语句列表划分为不同的分支部分。

编程好习惯

在最后一个case语句的后面加上一条break语句。

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


2.2default子句

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

其实也没什么,结构就是所有的语句都被跳过而已。

程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。

但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?

你可以在语句列表中增加一条default子句,把下面的标签

default:

写在任何一个 case 标签可以出现的位置。

当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。

但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。


编程好习惯


在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 。

3.循环语句

  • while
  • for
  • do while


3.1while循环

我们已经掌握了if语句`:

if(条件)
  语句;


当条件满足的情况下,if语句后的语句执行,否则不执行。

但是这个语句只会执行一次。

由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。

那我们怎么做呢?

C语言中给我们引入了: while 语句,可以实现循环。

//while 语法结构
while(表达式)
循环语句;

af20783e04a948308c1ed13c66997cb2.png



比如我们实现:

在屏幕上打印1-10的数

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

上面代码已经帮助我们了解了while语句的基本语法,那我们在了解一下:

3.1.1while语句中的break和continue

break介绍

#include <stdio.h>
int main()
{
  int i = 1;
  while (i <= 10)
  {
    if (i == 5)
      break;
    printf("%d ", i);
    i = i + 1;
  }
  return 0;
}
相关文章
|
7天前
|
C语言
【C语言基础】:分支与循环
【C语言基础】:分支与循环
|
20天前
|
算法 C语言 索引
C语言中的for循环:深入探索与实用技巧
C语言中的for循环:深入探索与实用技巧
15 1
|
21天前
|
C语言
C语言中如何避免循环死循环
C语言中如何避免循环死循环
15 1
|
23天前
|
C语言
C语言中的条件控制循环:深入解析与实战应用
C语言中的条件控制循环:深入解析与实战应用
29 1
|
15天前
|
C语言
c语言循环题目
c语言循环题目
|
15天前
|
C语言
C语言控制流程详解:分支与循环语句
C语言控制流程详解:分支与循环语句
11 0
|
21天前
|
C语言
c语言循环设计程序结构
c语言循环设计程序结构
17 0
|
22天前
|
存储 C语言
C语言for循环详解
C语言for循环详解
|
23天前
|
C语言
C语言中的循环控制结构与循环语句详解
C语言中的循环控制结构与循环语句详解
20 0
|
23天前
|
C语言
C语言条件控制循环的深入解析
C语言条件控制循环的深入解析
21 0