C语言分支和循环详解

目录
  • 前言
  • 一、什么是语句
  • 二、分支语句
    • 1.if语句
    • 2.switch语句
  • 三、循环语句
    • 1.while循环
    • 2.循环语句中的break与continue
    • 3.for循环
  • 总结

前言

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

一、什么是语句

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

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

很简单的概念。

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

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

二、分支语句

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

分支语句:

  • if
  • switch

1.if语句

if语句的结构:

if(条件)
    语句(带来的结果);
else
    语句(带来的结果);

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

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

if(条件)
   (语句);
else if(条件)
   (语句);
else(条件)
   (语句);

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

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

#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的语句:偏重。

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

#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

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

#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语句:

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

语句项又是什么呢?

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

#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语句类似

default:
{
}
             break;

三、循环语句

循环语句有以下几种

  • while
  • for
  • do while

1.while循环

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

while的语法结构

while(表达式)
循环语句;

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

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

#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判断。

举个例子能更好理解

#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循环的语法:

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

表达式1

依旧举个例子阐述:

(打印1-10的数字)

#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循环比较方便。

总结

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

(0)

相关推荐

  • 汇编语言 跳转指令与C语言的条件分支

    跳转指令 跳转指令也是一个组的指令,称为j组.其中jmp为无条件跳转,其余为条件跳转 上图为j组指令,可结合条件码访问指令加深理解 在机器指令水平上理解如何对跳转指令编码 如上图,通过反汇编软件得到机器指令与汇编语言,其中左边为机器指令编码,右边为对应汇编语言含义,最左边为每条机器指令地址 jmp指令的对应机器指令有两个字节:eb表示这是jmp指令,03描述跳转信息.值得注意的是,跳转指令进行编码时,采用相对位置编码,如03描述的就是偏移量 结合实例进行理解:在未执行jmp指令时,rip寄存器存

  • C语言实现循环队列基本操作

    循环队列依靠取模运算,实现队列中数据元素的逻辑成环操作.其相比队列的顺序存储实现,可以避免"假溢出"的问题. 头文件声明 #include <stdio.h> #include <stdlib.h> /* * 循环队列实现 */ //数据元素上限 #define MaxSize 50 //定义数据类型 typedef int ElemType; /*结构体定义*/ typedef struct SqQueue { ElemType data[MaxSize];/

  • C语言循环结构详解

    目录 break语句 continue语句 C语言循环结构 一.goto 语句(现在一般很少用) 1.语句介绍: 2.语法结构: 3.goto 语句程序示例: 二.do-while语句 1.语句介绍: 2.语法结构: 3.do-while 流程图: 4.do-while 语句程序示例: 三.while 语句 1.语句介绍: 2.语法结构: 3.while 循环流程图: 4.while 语句程序示例: 四.for 循环语句: 1.语句介绍: 2.语法结构: 3.for 循环语句流程图 4.for

  • C语言中的三种循环语句

    目录 一.while循环 二.do while 循环 三.for 循环 一.while循环 while即:首先检查启动循环的条件是否满足,当条件满足时,不断地重复循环体内的语句,直到不满足条件就退出. while循环基本形式: while(条件) { <循环体>; <循环体>; } eg: 1 //输入任意个int型,整数并判断其位数#include int main() { int x; intn=0; scanf("%d",&x); n++; x /

  • C语言基础解析之分支与循环语句

    目录 - if语句:if(表达式) 悬空else问题 - switch语句 要注意的细节 switch中的的default子句: - while循环语法结构 - for循环语法结构 - do while循环 循环练习题 - 题目一(阶乘) - 题目二(阶乘和) - 题目三(二分查找) - 题目四(两边往中间渐变) - 题目五(密码登录) - 题目六(猜数字游戏) - goto语句 - getchar与putchar用法 - if语句:if(表达式) // 括号里面放一个表达式 ​//表达式的结果

  • C语言分支和循环详解

    目录 前言 一.什么是语句 二.分支语句 1.if语句 2.switch语句 三.循环语句 1.while循环 2.循环语句中的break与continue 3.for循环 总结 前言 在本章,我会详述分支和循环语句的概念与使用规范 一.什么是语句 我们常在一条代码的末尾加一个分号 ":" ,C语言中分号前的就是一条语句,例如 int a = 0;//这是一条语句 printf("%d\n",a);这又是一条语句 很简单的概念. 那么,如果单放一个分号,分号前什么也

  • pythotn条件分支与循环详解(3)

    目录 1. break 语句 2. continue 语句 3. 复杂条件及处理 总结 在while和for循环过程中,为了更加灵活地控制循环的次数,python提供了break和continue循环控制语句. 1. break 语句 当while和for循环过程产生的所有操作在满足业务的要求时,可以通过break语句立刻终止并跳出循环语句,避免过度循环次数的发生,以提高处理的效率. 带break的for循环过程 示例: for i in range(1,10): if(i>5): break

  • pythotn条件分支与循环详解(2)

    目录 1. for语句基本用法 2. 遍历循环 2.1)计数循环(N次) 2.2)计数循环(特定次数) 3. for循环示例 4. 练习 1.九九乘法表 2.求1000以内所有的水仙花数 总结 for循环语句为python语言的另外一种形式的循环控制语句. 1. for语句基本用法 基本语法格式: for <variable> in <sequence>: 子代码模块1 else: 子代码模块2 语法格式图示: 1)for语句的基本语法格式说明   variable接受sequen

  • pythotn条件分支与循环详解

    目录 if条件分支 1. if语句基本用法 1)判断条件   2)示例 2. 双分支判断 3. 多条件多分支判断 4. 案例 while 循环 1. while语句基本用法 2. 练习 总结 if条件分支 1. if语句基本用法 if boolean_value: 子代码模块1 1)判断条件   boolean_value是if语句判断条件,以布尔值的形式判断if语句是否执行子代码模块1.当boolean_value值为True时,则执行在代码模块1:当值为False时,就不会执行. 2)示例

  • 史上最强C语言分支和循环教程详解

    目录 3.3 do...while()循环 3.3.1 do语句的语法: 3.3.2 执行流程 3.3.3 do语句的特点 3.3.4 do while循环中的break和continue 3.4 练习 3.4.1. 计算 n的阶乘. 3.4.2. 计算 1!+2!+3!+--+10! 3.4.3. 在一个有序数组中查找具体的某个数字n. 3.4.4. 编写代码,演示多个字符从两端移动,向中间汇聚. 3.4.5. 编写代码实现,模拟用户登录情景,并且只能登录三次. 3.4.6.猜数字游戏实现 4

  • C语言实现扫雷游戏详解(附源码)

    目录 1.游戏的功能 2.游戏实现的基本思路 2.1实现菜单给玩家选择 2.2初始化棋盘 2.3数组大小的问题 2.4对棋盘赋值 2.5打印棋盘 2.6布置雷 2.7排查雷 3.代码基本实现部分 3.1主函数部分 3.2 初始化棋盘 3.3对两个棋盘进行赋值 3.4打印棋盘 3.5布置雷 3.6排查雷  3.7函数声明 4.扫雷游戏的源代码 总结 1.游戏的功能 游戏的主要功能有 1:棋盘内有若干个雷 2:玩家输入要排查雷的坐标 3:在玩家输入的坐标处显示周围八个坐标有几个雷 3:若玩家将所有的

  • C语言实现扫雷游戏详解(附源码)

    目录 1.游戏的功能 2.游戏实现的基本思路 2.1实现菜单给玩家选择 2.2初始化棋盘 2.3数组大小的问题 2.4对棋盘赋值 2.5打印棋盘 2.6布置雷 2.7排查雷 3.代码基本实现部分 3.1主函数部分 3.2 初始化棋盘 3.3对两个棋盘进行赋值 3.4打印棋盘 3.5布置雷 3.6排查雷  3.7函数声明 4.扫雷游戏的源代码 总结 1.游戏的功能 游戏的主要功能有 1:棋盘内有若干个雷 2:玩家输入要排查雷的坐标 3:在玩家输入的坐标处显示周围八个坐标有几个雷 3:若玩家将所有的

  • 关于javascript的一些知识以及循环详解

    javascript的一些知识点: 1.常用的五大浏览器:chrome,firefox,Safari,ie,opera 2.浏览器是如何工作的简化版: 3.Js由ECMAjavascript;DOM;BOM组成: 4.js是弱类型语言(即需要游览器解析了才知道是什么类型的): 5.js是脚本语言(边解析边执行): 6.script也分行内样式,嵌套样式和外联样式. 外联样式一般写在body的最后,因为放在前面会先加载js代码然后再干其他的,影响用户体验. 7.同步和异步 同步:一行一行依次执行.

  • C语言动态规划之背包问题详解

    01背包问题 给定n种物品,和一个容量为C的背包,物品i的重量是w[i],其价值为v[i].问如何选择装入背包的物品,使得装入背包中的总价值最大?(面对每个武平,只能有选择拿取或者不拿两种选择,不能选择装入某物品的一部分,也不能装入物品多次) 声明一个数组f[n][c]的二维数组,f[i][j]表示在面对第i件物品,且背包容量为j时所能获得的最大价值. 根据题目要求进行打表查找相关的边界和规律 根据打表列写相关的状态转移方程 用程序实现状态转移方程 真题演练: 一个旅行者有一个最多能装M公斤的背

  • C语言strtod()函数案例详解

    前言 网上有很多关于strtod()函数的文章,不过大部分都是用strtod()函数转换一个字符 char *str = "111.11"; char *target; double ret; ret = strtod(str, &target); 很少有转换字符串的这样的用法 char *p = "111.11 -2.22 Nan nan(2) inF 0X1.BC70A3D70A3D7P+6 1.18973e+4932zzz"; 本文主要参考strtod

随机推荐