gpt4 book ai didi

C语言分支和循环详解

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章C语言分支和循环详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

前言

在本章,我会详述分支和循环语句的概念与使用规范 。

1、什么是语句

我们常在一条代码的末尾加一个分号 “;” ,C语言中分号前的就是一条语句,例如 。

?
1
2
int a = 0; //这是一条语句
printf ( "%d\n" ,a);这又是一条语句

很简单的概念.

那么,如果单放一个分号,分号前什么也不写,算不算一条语句呢?

答:当然也算,这是需要注意的一个小点.

2、分支语句

分支语句又叫选择结构,就比如你如果认真学习,你就能找到好工作;如果你整天打游戏,那就等于你选择了毕业后失业。是好好学习,还是打游戏,这就是你的选择,你的选择会带来相应的结果,这就是分支语句.

分支语句:

  • if
  • switch

1.if语句

if语句的结构:

?
1
2
3
4
if (条件)
     语句(带来的结果);
else
     语句(带来的结果);

如果满足if括号里的条件,则实行if下面的语句,否则执行else下面的语句.

上面是一种结构,还有一种叫多分支结构:

?
1
2
3
4
5
6
if (条件)
    (语句);
else if (条件)
    (语句);
else (条件)
    (语句);

其实就是在上一种结构上,多了一个选择else if.

接下来我举一个完整的例子,以体重为例 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
int main()
{
  int weight = 0;
  scanf (“%d\n”,&weigth);
  if (weight<100)
     {
     printf ( "瘦子" );
     }
  else if (weight>100 && weight<150)
     {
     printf ( "正常" )
     }`在这里插入代码片`
  else
     {
     printf "偏重"
     }
     return 0;
  }

这里就是让你输入体重 。

  • 如果满足if(体重小于100),那么输出:瘦子
  • 如果满足else if()体重在100至150之间,那么输出:正常

注意:当我们想表达体重大于100,小于150,我们通常会写(100<weight<150),但在C语言中,这是错误的。正确书写应该为(weight>100 && weight<150).

这个符号&&成为逻辑与运算符,只有当两个式子都为真的时候,它才会表达为真,与高中我们学的“或且非”的原理一样.

在我们这个例子就是,当weight同时满足小于150和大于100的时候,它才会判断为真,然后输出结果 。

  • 如果上面都不满足,就输出else的语句:偏重。

除此之外,还有个新手常犯的错误,我们看以下代码 。

?
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main()
{
     int a = 0;/第一行
     int b = 2;/第二行
     if (a == 1)/第三行
         if (b == 2)/第四行
             printf ( "好的\n" );/第五行
     else /第六行
         printf ( "不好\n" );/第七行
     return 0;

可见第三行 if 和第六行的 else 是对齐的,想当然的以为这两个是对应的,如果是这两个对应的话,程序执行的步骤应该是 。

1. 令a = 0,b = 2 。

2. 到第三行,判断a是否为2,判断为否 。

3. 执行else打印“不好” 。

但是当我们执行会发现,它什么都没打印.

因为,else 和 if 对应的原则是,就近原则,其实第六行和第四行它们是挨最近的,所以是这两处的else和if对应。 因此,程序执行的步骤应该是 。

1. 令a = 0,b = 2 。

2. 判断a是否为1,判断为否 。

3. 下一级的if else语句不执行,直接return 0 。

所以我们平时为避免这类错误,应当注意使用大括号“{ }” 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int main()
{
     int a = 0;
     int b = 2;
     if (a == 1)
        {
          if (b == 2)
             printf ( "好的\n" );
         }
     else
        {
        printf ( "不好\n" );
        }
     return 0;

这样,它打印出来的就是“不好”.

2.switch语句

switch也是一直分支语句,常用于多分支,例如你输入1,程序就输出一月,你输入2,程序就输出二月,以此类推,用 if 语句写比较麻烦,所以就诞生了switch语句.

switch语句:

?
1
2
3
4
switch (整型常量表达式)
{
    语句项
  }

语句项又是什么呢?

语句项是一些case语句,放在例子中为比较好理解 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
int main()
{
     int day = 1
     ;
     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.int day = 1 这个值可以随机 。

2.进入switch语句 。

3.判断day的值与哪个case相同 。

4.输出该case下的语句 。

此外,该代码中的break,为终止语句 。

何为终于语句?

答: 就是程序执行到break,就终止了,很好理解。在switch语句中,实际上程序是判断执行哪个case,判断到了,就直接跳到那个case那边,之后接着执行下面的代码,是不会终止的。就等于十条斑马线,你一跳,跳到了第三条,但之后你还要走完后面的七条.

所以break语句在这里的作用就是你跳到了第三条斑马线,就让你停下来,不让你走了 。

还有一种情况:如果表达的值与所有case标签的值都不匹配怎么办?

答:其实不匹配在C语言中也不会被报错,只是什么都不输出.

当 switch表达式的值并不匹配所有case标签的值时,我们可以用default子句 来规定其输出什么,其实和case语句类似 。

?
1
2
3
4
default :
{
}
              break ;

3、循环语句

循环语句有以下几种 。

  • while
  • for
  • do while

1.while循环

循环,顾名思义就是程序去重复执行一个指令,我们可以用此非常简短的写出我们需要的东西。 我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。 那我们怎么做呢? C语言中给我们引入了:while语句,可以实现循环.

while的语法结构 。

?
1
2
while (表达式)
循环语句;

当我们一直循环,直到满足了表达式所规定的条件,程序才会跳出.

比如我们实现在屏幕上打印1-10的数字 。

?
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main()
{
  int i = 1;
  while (i<=10)
  {
  printf ( "%d " , i);
  i = i+1;
  }
  return 0;
}

它运行的步骤是 。

1.令i = 1 。

2.判断 i 是否小于等于10 。

3.判断为真,则进入循环.

4.先打印 i 的数值 。

5.再i + 1 。

6.再判断 i 是否小于等于10 。

7.以此类推 。

2.循环语句中的break与continue

break作用:

break在while语句中,起直接终止所有循环的作用.

continue作用:

continue在while语句中,起终止本次循环的作用,就是在本次循环中,碰到continue后面的语句就不执行,直接跳到while判断.

举个例子能更好理解 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int main()
{
  int i = 1;
  while (i<=10)
  {
  if (i == 5)
  continue ;
  printf ( "%d " , i);
  i = i+1;
  }
  return 0;
}

大家猜猜此时程序运行之后 打印的值是多少?

答案是:1、2、3、4 。

该程序执行步骤:

1.令 i = 1 。

2.判断 i 是否小于等于10 。

3.判断为真,进入循环 。

4.在循环内判断 i 是否等于 5 。

5.不等于 则跳过 if 的语句项continue 。

6.打印 i 的值 。

7.i + 1 。

8.再次循环 。

9.当循环到i 等于 5 的时候 进入 if 语句 。

10.执行continue 跳过本次循环(不执行后面的打印和 i + 1) 。

11.直接判断 i 是否小于等于 10 (此时 i 还等于5) 。

12.再次进入 if 重复 9、10、11的动作 。

相信这样大家能够更加理解continue的作用.

3.for循环

为什么有了 while 循环还要多个 for 循环呢?

首先我们看for循环的语法:

?
1
2
for (表达式1,表达式2,表达式3)
    循环语句:

表达式1 。

依旧举个例子阐述:

(打印1-10的数字) 。

?
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main()
{
  int i = 0;
  //for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
  for (i=1; i<=10; i++)
  {
  printf ( "%d " , i);
  }
  return 0;
  }

这段代码首先将 i 初始化为1,之后判断 i 是否小于等于10,是则进入循环,执行完整个代码之后再i++(i自增1),再重复上述动作直到 i 大于10停止循环.

那么可见for与while循环是类似的,但我们应该在什么时候用for什么时候用while呢?

答:对一个数组进行循环时,如果每轮循环都是在循 环处理完后才将循环变量增加的话,使用for循环比较方便。 如果循环处理的过程中就要将循环变量增加时,则使用while循环比较方便.

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我的更多内容! 。

原文链接:https://blog.csdn.net/lzhNox/article/details/119849333 。

最后此篇关于C语言分支和循环详解的文章就讲到这里了,如果你想了解更多关于C语言分支和循环详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com