C语言实例讲解四大循环语句的使用

目录
  • 一、do…while()循环
    • 1. 图示流程
    • 2. 代码流程
    • 3. 示例代码1到100求和)
  • 二、while()循环
    • 1. 图示流程
    • 2. 代码流程
    • 3. 示例代码(1到100求和)
  • 三、for()循环
    • 1. 图示流程
    • 2. 代码流程
    • 3. 示例代码(1到100求和)
  • 四、goto循环
    • 1. 代码流程
    • 2. 示例代码-1(1到100求和)
    • 3. 示例代码-2

一、do…while()循环

1. 图示流程

从上面图示 do…while() 语句流程中可以看出,do…while() 语句会先进入循环体执行里面的内容,然后再进行条件判断,当条件为真,就继续执行循环体的内容,当条件为假就退出do…while() 语句。也就是说 do…while() 语句 最少会执行一遍循环体里面的内容。

2. 代码流程

do {
    语句块
} while (表达式);

do…while() 语句的代码流程也很简单,程序执行到 do…while() 语句的时候,会先执行语句块(也叫循环体)中的内容,执行完一次后,就会判断表达式的内容是真还是假,如果是真,那么就继续执行语句块的内容,如果是假,那么就不再执行语句块的内容,而是退出该循环。在写 do…while() 语句的时候 while 后面那个分号千万不能掉了,这点新手尤其要注意

3. 示例代码1到100求和)

源代码:

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

运行结果:

sum = 5050

二、while()循环

1. 图示流程

while() 循环语句会先判断条件,当条件为真的时候才会执行循环体,当条件为假的时候直接就退出了循环体。也就是说,while() 语句循环体里面的内容可能一次都不会被执行,这就是 while() 语句和 do…while() 语句最大的区别。

2. 代码流程

while (表达式) {
    语句块
}

while() 循环语句的代码流程也很简单,就是先判断表达式的内容,当表达式为真的时候,就执行语句块的内容,语句块中的内容执行完了后又会判断表达式的值,直到表达式的值为假才会跳出语句块中。

3. 示例代码(1到100求和)

源代码:

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

运行结果:

sum = 5050

三、for()循环

1. 图示流程

for() 循环的图示代码流程和 while() 循环的图示代码流程不能说毫不相干,只能说一模一样。但是其代码表现流程有点区别,下面来重点讲解下for() 循环的代码流程。

2. 代码流程

for (表达式1; 表达式2; 表达式3) 
{
    语句块
}

for() 循环的代码流程看着表达式挺多的,好像挺复杂,但其实不然,让我来为大家进行细致讲解。

for() 循环首先执行表达式1,再执行表达式2,当表达式2的值为真的时候就会执行语句块的内容,语句块内容执行完后就会执行表达式3,表达式3执行完,又会跳转执行表达式2,当表达式2为真,又执行语句块,相当于循环一直在 表达式2 -> 语句块 -> 表达式3 之间循环。当表达式2的值为假的时候就会跳出循环。

for() 循环有几个地方值得大家注意:

(1)表达式1只会在刚进 for 循环的时候执行一次。

(2)在c99及之后的标准中,表达式1处可以定义变量,变量周期在整个for循环中。但是c98不允许这样做,否则编译器会报错。

(3)表达式1、表达式2、表达式3 都可以不写省略。但是当表达式2省略不写的时候意味着,编译器在处理这里的时候这里不为假,从而会执行语句块。

3. 示例代码(1到100求和)

源代码:

#include <stdio.h>
int main()
{
    int i = 0, sum = 0;
    for (i = 0; i <= 100; i++) {
        sum += i;
    }
    printf("sum = %d\n", sum);
    return 0;
}

运行结果:

sum = 5050

四、goto循环

1. 代码流程

标签:
goto 标签;

读到这里可能有读者会发现,为啥前面都有图解,goto 语句没有,是作者不会了吗?哈哈,其实回答这个问题我只能说是也不是。回答是,是因为确实没图解,因为 goto 语句太简单了,简单到把我给整不会了。回答不是,是因为简单到没必要,哈哈~~

其实通过代码流程就可以看出,goto 语句确实很简单,就是当程序运行到 goto 那里的时候会跳转到标签处接着运行,这种跳转是无条件跳转,只要程序运行到 goto,就会跳转!!!标签处可以任意命名,命名规则必须遵循C语言标识符命名法。标签可以写在 goto 的前面,也可以写在 goto 的后面,这点不受影响。程序运行到标签处不会做任何处理,只有goto 才会跳转到标签那里,上面两个标签的地方名字需要一模一样。

其实说到goto语句,就不得不提一下goto的历史了,其实在编程的时候大家有个约定俗成的规矩,那就是能不用goto的地方那就不用,为什么会这样呢,其实就是我上面提到的,goto 语句会无条件跳转,这点就和其他三个循环不同。了解C语言的人都知道,C语言是面向过程编程,怎么理解面向过程编程呢,其实就是和人一样,就是现做什么再做什么,人早上起来要先刷牙,再吃早餐。C语言也一样,要使用变量,就得先定义变量。面向过程就类似这个道理。但是 goto 会无条件跳转,这就会让读代码的人感觉很混乱,要在代码中乱跳,并且使用不恰当的话往往达不到自己想要的效果,这也因此使得大家能不用 goto 就尽量不使用 goto。但是在linux内核代码中,goto 却会被常常用作一个判错用途。先看下面示例代码-2,结合代码和大家一起讲解。

2. 示例代码-1(1到100求和)

源代码:

#include <stdio.h>
int main()
{
    int i = 0, sum = 0;
loop:
    if (i <= 100) {
        sum += i;
        i++;
        goto loop;
    }
    printf("sum = %d\n", sum);
    return 0;
}

运行结果:

sum = 5050

写这个代码是想告诉大家,都是实现 1 到 100 求和,但是4种循环语句都可以做到,也就是说4种循环之间都可以相互转换,具体想用哪种循环就全看大家自己的选择了,但是为了遵循约定俗成的东西,除了特殊场景,大家还是尽量不要使用 goto 语句了。

3. 示例代码-2

源代码:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int *p1, *p2, *p3;
    p1 = malloc(10);
    if (p1 == NULL) {
        printf("malloc failed : 1\n");
        goto loop_1;
    }
    *p1 = 1;
    p2 = malloc(20);
    if (p2 == NULL) {
        printf("malloc failed : 2\n");
        goto loop_2;
    }
    *p2 = 2;
    p3 = malloc(30);
    if (p3 == NULL) {
        printf("malloc failed : 3\n");
        goto loop_3;
    }
    *p3 = 3;
    printf("*p1 = %d, *p2 = %d, *p3 = %d\n", *p1, *p2, *p3);
loop_3:
    free(p2);
loop_2:
    free(p1);
loop_1:
    return 0;
}

运行结果:

*p1 = 1, *p2 = 2, *p3 = 3

大家看看上面这段代码,首先申请了10字节空间,如果申请失败,那么我下面的代码就没有执行的必要了,所以直接退出程序。申请成功就会继续申请20字节空间,假如在这时什么失败了,那么下面的代码也同样没有执行的必要,然后我也要退出程序,但是在退出程序前,需要将 p1 指向的那块内存给释放掉,否则就会造成内存泄漏。如果继续申请成功,就会再申请30字节空间,如果申请失败,那么也要退出程序,并且在退出前需要释放前两次申请的空间。上面使用 goto 语句有两大优势,其一就是可读性高,操作方便,不然就要在后面每次申请失败的里面加上释放前面申请的内存的操作,很明显如果这样做,代码移植效率就会很低,而且假如在中间加了一次申请内存的操作,后面的地方就都要加上出错释放内存的步骤。其二就是保持程序退出的地方统一,如果不这样做,需要在每个出错的地方加上 return 的操作,代码可读性没有这样做高。在linux内核代码种,像上面这样使用 goto 语句的操作是经常被用到的,很显然上面这种做法很巧妙,其实在linux内核代码中还有很多巧妙的操作,如果可以的话,大家可以多读读linux源码,对自己的编码功底将会有很大的提升的。

到此这篇关于C语言实例讲解四大循环语句的使用的文章就介绍到这了,更多相关C语言循环语句内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言的分支和循环语句你真的了解吗

    目录 什么是语句? 分支语句 if语句 悬空else if书写形式的对比 练习 switch语句 default子句 循环语句 while循环 while语句中的break和continue 总结 什么是语句? C语句可分为以下五类: 表达式语句 函数调用语句 控制语句 复合语句 空语句 表达式语句 --> 表达式后面带个; 函数调用语句 --> 在写完的函数后面加个; 控制语句 控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句. 可分

  • 深入了解c语言的循环语句

    目录 C语言循环语句 while循环 for循环 do......while 循环的嵌套 总结: C语言循环语句 大多数人都希望自己是体格强健,天资聪慧,多才多艺的人.虽然有时事与愿违,但至少我们用c能写出这样的程序.诀窍是控制程序流.对于计算机科学(是研究计算机,不是用计算机作研究) 1 如果满足某些条件就重复执行语句(循环). 2 通过测试选择执行哪一个语句(分支). 在c语言当中有while,for,do......while循环. while循环 while循环语句 while(表达式)

  • 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语言超细致讲解循环语句

    目录 C语言循环家族 while循环 for循环 dowhile循环 C语言循环家族 家族成员有while语句,for语句和do....while语句.这些成员都能实现循环,但又各有特点.今天就由我带领大家一起认识他们吧! while循环 while语句的基本格式: while(表达式) { 循环语句; } while语句执行的流程: while语句的理解: 1当表达式为假时(0为假),不执行while语句中的内容. 2当表达式为真的时候(非0),便循环执行while循环语句的内容,直到表达式为

  • C语言中循环语句练习实例

    计算n的阶乘 int main() { int i=0; int ret=1; scanf("%d",&i); for(i=1;i<=n;i++) { ret=ret*i; } printf("%d\n",ret); return 0; } 计算1!+2!+3!+.....+10! int main() {计算1!+2!+3!+.....+10! int i = 0; int j = 0; int sum = 0; int ret = 1; for (

  • C语言一看就懂的选择与循环语句及函数介绍

    目录 选择语句 循环语句 while语句 for循环 do while 函数 选择语句 什么是选择语句呢?只要是你学过编程语言的,就知道选择语句是程序的灵魂之一,差不多大多是的程序都需要用到这个语句. 一般来说,C语言的选择语句的结构是,if .else if. else 每一个条件后面都需要按照标准的语法格式进行书写,其次除了else后面不需要加括号条件之后,其他的都需要加入条件. 看一下下面的严格语法,在书写的过程中,我们需要按照严格标准继续编码,不要随心所欲的写代码,注意格式! #incl

  • C语言之循环语句详细介绍

    目录 前言 while语句 do...while语句 for语句 结语 前言 C语言中的循环结构是程序中的一个基本结构. 循环结构可以使我们写很少的语句,让计算机反复执行某一过程. C语言提供了while语句,do......while语句和for语句,可以组成各种不同形式的循环结构. while语句 while语句又称当型循环控制语句 while(表达式) 语句 表达式式循环条件 ,语句是循环体 当表达式的值为真(非0)时,执行循环体语句,否则终止循环.其特点是先判断,再执行. 例如:计算1+

  • C语言的分支和循环语句你了解吗

    目录 1.什么是语句? 2.分支语句(选择结构) 2.1.if语句 2.2.switch语句 2.2.1.switch语句中的break 2.2.2default子句 3.循环语句 3.1.while循环 3.1.1while中的break和continue 3.2.for循环 3.2.1.语法 3.2.2.break和continue在for循环中 3.2.3.for语句的循环控制变量 3.2.4.for循环的变种 3.3do…while()循环 3.3.1.语法 3.3.2.执行流程 3.3

  • C语言详细讲解循环语句的妙用

    目录 一.循环语句分析 二.do ... while 语句的循环方式 三.while 语句的循环方式 四.for 语句的循环方式 五.break和 continue 的区别 六.do 和 break 的妙用 七.小结 一.循环语句分析 循环语句的基本工作方式 通过条件表达式判定是否执行循环体 条件表达式遵循 if 语句表达式的原则 do,while,for的区别 do 语句先执行后判断,循环体至少执行一次 while 语句先判断后执行,循环体可能不执行 for 语句先判断后执行,相比 while

  • C语言实例讲解四大循环语句的使用

    目录 一.do…while()循环 1. 图示流程 2. 代码流程 3. 示例代码1到100求和) 二.while()循环 1. 图示流程 2. 代码流程 3. 示例代码(1到100求和) 三.for()循环 1. 图示流程 2. 代码流程 3. 示例代码(1到100求和) 四.goto循环 1. 代码流程 2. 示例代码-1(1到100求和) 3. 示例代码-2 一.do…while()循环 1. 图示流程 从上面图示 do…while() 语句流程中可以看出,do…while() 语句会先进

  • C语言示例讲解while循环语句的用法

    目录 1.while语句结构 2.代码示例 在学习和回顾该知识前,已经掌握了if语句的结构和用法. if (条件)    语句; 当条件满足的情况下,if结构中的语句执行,且只执行一次:条件不满足则不执行.但是生活中常常需要将一件事情完成很多次,这时候就要用到while语句来实现循环了. 1.while语句结构 while (表达式)    循环语句; 例子:利用循环结构打印1-10 #include <stdio.h> int main() { int i = 0; while(i <

  • C语言实例讲解嵌套语句的用法

    目录 一 .if 嵌套 二.比较ab两个数值大小 三.总结 一 .if 嵌套 格式: if ( 条件 ){    if( 嵌入一个条件 ){    else    {就近原则,对应上面的if}} else{ 对应最开始那个if }} 代码: #include <stdio.h> int main (void) { int score; // 定义一个分数变量 printf("请输入您的分数:"); scanf("%d",&score); // 键

  • Java调用R语言实例讲解

    R是统计计算的强大工具,JAVA是做应用系统的主流语言.JAVA负责系统的构建,R用来做运算引擎,从而实现应用型和分析性相结合的系统. 一.Rserve(远程通信模式) Rserve是一个基于TCP/IP的服务器,通过二进制协议传输数据,可以提供远程连接,使得客户端语言能够调用R. Rserve作为一个package发布在CRAN上,可以直接使用install.packages("Rserve")进行安装.需要使用时在R控制台下加载该包,然后输入命令Rserve(),开启服务器就可以供

  • C语言示例讲解for循环的用法

    目录 1.循环语句for的语法 2.for循环中的break以及continue 3.for语句的循环变量控制的一些建议 4.for循环的变种 5.题目 1.循环语句for的语法 for (表达式1;表达式2;表达式3)    循环; 其中,表达式1是初始化:表达式2是判断:表达式3是调整. 示例:用for循环打印1-10. int main() { int i = 0; for (i = 1; i < 11; i++) printf("%d ",i); return 0; }

  • C语言示例讲解if else语句的用法

    目录 1.前言 2.if语句的语法结构 3.关于if else语句的示例 4.if else 书写形式的对比 5.例子 1.前言 (1)C语言是结构化的程序设计语言.C语言的三种基本程序结构分别是: 顺序结构:按照程序顺序执行 选择结构:根据判断结果选择分支方向 循环结构:指有一个循环体,可以根据判断条件决定循环多少次 (2)分支语句(选择语句)和循环语句 (3)什么是语句? C语言中由一个分号(;)隔开的就是一条语句. 2.if语句的语法结构 大致分为三种: if(表达式)    语句; if

  • Python调用R语言实例讲解

    网络上经常看到有人问数据分析是学习Python好还是R语言好,还有一些争论Python好还是R好的文章.每次看到这样的文章我都会想到李舰和肖凯的<数据科学中的R语言>,书中一直强调,工具不分好坏,重要的是解决问题的思路,就算是简单的excel,也能应付数据分析中的大部分问题.再者Python和R本来就没有什么好对比的,一门是计算机工程语言,一门是统计语言,只有将两者结合起来,才能发挥更大的威力,不是吗,对于数据分析的人来说,难道不是两样都要掌握的吗? rpy2是Python调用R程序的模块,旨

  • C语言进阶教程之循环语句缺陷详析

    目录 前言 1 循环语句的三要素 2 使用不同循环语句实现六种排列组合 2.1 第一种排列(ABC) 2.2 第二种排列(ACB) 2.3 第三种排列(BCA) 2.4 第四种排列(CBA) 2.5 第五种排列(BAC) 2.6 第六种排列(CAB) 3 什么时候用for循环语句 4 什么时候用while循环语句 5 什么时候用do-while循环语句 6 其他情况 7 总结 前言 你是否也有过下面的体会? 为什么刚开始学习C语言时很喜欢用for循环语句,但逐渐发现有经验的工程师都在用while

  • C语言示例讲解switch分支语句的用法

    目录 1.了解switch分支语句 2.示例 3.default子句 4.练习 1.了解switch分支语句 switch语句也是一种分支语句,常常用于多分支的情况. 比如: 输入1,就会输出星期一 输入2,就会输出星期二 … 输入7,就会输出星期七 对于这样的代码需求,如果用if .else if.else的形式就会显得太复杂.如何用switch语句实现该功能呢?switch语句的结构又是怎样的呢? switch(整型表达式){    语句项;} 其中,整型表达式必须为整型,且为常量(字符也可

随机推荐