首页 > 其他分享 >一文带你掌握C语言的循环结构

一文带你掌握C语言的循环结构

时间:2023-12-01 15:59:54浏览次数:20  
标签:语句 循环体 一文 C语言 while 循环 条件 表达式

C语言循环结构详解

在C语言中,循环结构是一种重要的控制结构,它允许我们重复执行一段代码,以达到特定的目的。循环结构可以帮助我们简化重复性的任务,提高代码的效率。本篇文章将深入探讨C语言中的循环结构,包括 while 循环、for 循环、do-while 循环以及循环中的控制语句。

1. while 循环

1.1 while 循环的基本语法

while 循环是C语言中最基本的循环结构之一。它的基本语法如下:

while (条件) {
    // 循环体代码
}

在这个语法结构中,条件是一个布尔表达式,当条件为真时,循环体中的代码将被执行。如果条件为假,则跳过循环体,继续执行后续的代码。

1.2 while 循环的执行流程

  1. 首先,计算条件的值。
  2. 如果条件为真,则执行循环体中的代码。
  3. 执行完循环体后,再次计算条件的值。
  4. 如果条件仍为真,则继续执行循环体,重复步骤3
  5. 如果条件为假,则跳出循环,继续执行后续的代码。

1.3 if 和 while的混淆处

在使用 while 循环时,有时候容易与if语句混淆。尤其是当条件的判断较为复杂时,我们需要仔细区分两者的使用场景。

if 语句用于在特定条件下执行一段代码,而 while 循环用于重复执行一段代码,直到条件不满足为止。

在使用 while 循环时,需要确保循环体内部的代码能够改变条件的值,以免陷入无限循环的情况。

2. for 循环

2.1 for 循环的基本语法

for 循环是C语言中常用的循环结构,它的基本语法如下:

for (初始化表达式; 条件表达式; 更新表达式) {
    // 循环体代码
}

在这个语法结构中,初始化表达式用于初始化循环变量,条件表达式用于判断循环是否继续执行,更新表达式用于更新循环变量的值。

2.2 for 循环的执行流程

  1. 首先,执行初始化表达式,初始化循环变量。
  2. 然后,计算条件表达式的值。
  3. 如果条件为真,则执行循环体中的代码。
  4. 执行完循环体后,执行更新表达式,更新循环变量的值。
  5. 再次计算条件表达式的值。
  6. 如果条件仍为真,则继续执行循环体和更新表达式,重复步骤5
  7. 如果条件为假,则跳出循环,继续执行后续的代码。

2.3 for 循环的易错之处

首先,需要确保循环变量在循环体内部被更新,以免陷入无限循环的情况。

其次,循环变量的作用范围仅限于for循环内部,如果在循环外部使用循环变量,可能会导致编译错误。

另外,初始化表达式、条件表达式和更新表达式都可以为空,但分号必须保留

2.4 while 循环和 for 循环对比

while循环 for循环
语法 while (条件) {
    // 循环体代码
}
for (初始化表达式; 条件表达式; 更新表达式) {
    // 循环体代码
}
使用场景 循环次数不确定时 循环次数已知或可计算时
循环变量 需要在循环体内部手动更新 在循环结构中自动更新
作用范围 循环外部无法访问循环变量 仅限于for循环内部

3 do-while 循环

3.1 do-while 循环的基本语法

do-while循环是C语言中另一种常用的循环结构,它的基本语法如下:

do {
    // 循环体代码
} while (条件);

在这个语法结构中,先执行循环体中的代码,然后再计算条件的值。如果条件为真,则继续执行循环体,重复以上步骤。如果条件为假,则跳出循环,继续执行后续的代码。

3.2 do-while 的执行流程

  1. 首先,执行循环体中的代码。
  2. 然后,计算条件的值。
  3. 如果条件为真,则继续执行循环体,重复步骤1和2。
  4. 如果条件为假,则跳出循环,继续执行后续的代码。

与 while 循环和 for 循环不同的是,do-while 循环保证循环体至少执行一次,即使条件一开始就为假。

3.3 3 种循环如何选择?

在选择使用 while 循环、for 循环还是 do-while 循环时,还是需要根据具体的需求和情况进行判断,以下我列出一个比较常规的判断方式,仅供参考。

  • 如果循环次数不确定至少要执行一次循环体,可以使用 do-while 循环。
  • 如果循环次数已知或可计算,并且需要在循环结构中自动更新循环变量,可以使用 for 循环。
  • 如果仅需要根据条件判断是否执行循环体,可以使用 while 循环。

4 循环中跳出

4.1 break 语句

在循环结构中,使用 break 语句可以提前跳出循环,即使条件仍然满足。

下面是一个使用 break 语句打印1~4范围数字的示例:

int i;

for (i = 1; i <= 10; i++) {
    if (i == 5) {
        break;
    }
    printf("%d ", i);
}

// 输出结果:1 2 3 4

在这个示例中,当循环变量i等于5时,执行 break 语句,跳出循环。

4.2 continue 语句

在循环结构中,使用 continue 语句可以提前结束当前循环的迭代,直接进入下一次迭代。

下面是一个使用 continue 语句只打印10以内奇数的示例:

int i;

for (i = 1; i <= 10; i++) {
    if (i % 2 == 0) {
        continue;
    }
    printf("%d ", i);
}

// 输出结果:1 3 5 7 9

在这个示例中,当循环变量 i 为偶数时,执行 continue 语句,跳过当前迭代,直接进入下一次迭代。

使用 break 和 continue 语句可以灵活地控制循环的执行流程,以满足特定的需求。

5 循环嵌套

循环嵌套是指在一个循环结构内部嵌套另一个循环结构。通过循环嵌套,我们可以实现更复杂的循环逻辑。

下面是一个使用循环嵌套打印乘法表的示例:

int i, j;

for (i = 1; i <= 9; i++) {
    for (j = 1; j <= i; j++) {
        printf("%d * %d = %d\\t", j, i, i * j);
    }
    printf("\\n");
}

在这个示例中,外层循环控制乘法表的行数,内层循环控制每行的列数。通过嵌套循环,我们可以逐行逐列地打印乘法表的内容。

循环嵌套可以实现更复杂的循环逻辑,但需要注意循环变量的作用范围和循环条件的控制,以避免陷入无限循环的情况。

循环嵌套如果不做出一定的优化,性能上是有很严重的问题的哦,特别是多重嵌套的循环,学过数据结构与算法的朋友应该是明白的。

6 goto 语句

6.1 基本使用

在C语言中,goto 语句可以用于无条件地跳转到程序中的标记位置。它可以在一定程度上改变程序的执行流程,但过度使用 goto 语句可能会导致代码难以理解和维护。

下面是一个使用 goto 语句实现循环打印数字1~10的示例:

int i = 1;

loop:
    printf("%d ", i);
    i++;

    if (i <= 10) {
        goto loop;
    }

在这个示例中,使用 goto 语句将程序跳转到标记位置 loop,实现了循环的效果。

6.2 注意事项

  • 应该避免过度使用 goto 语句,以保持代码的可读性和可维护性。
  • 确保跳转的目标位置在当前作用域内,以避免跨作用域的问题。
  • 注意避免形成死循环或无限循环,以免程序无法正常结束。

标签:语句,循环体,一文,C语言,while,循环,条件,表达式
From: https://www.cnblogs.com/gupingan/p/17868332.html

相关文章

  • while循环
    循环结构循环结构是一种程序控制结构,用于反复执行一组语句,直到满足某个条件【一】while循环(1)语法whilecondition:#循环体while是循环的关键字condition是循环的条件,当条件为真时,循环体会一直执行(2)使用count=0whilecount<5:count+=1ifcount......
  • C语言的一些类型声明符
    基本类型:char:字符类型int:整数类型float:单精度浮点数类型double:双精度浮点数类型void:无类型修饰符:short:短整数类型long:长整数类型signed:有符号类型unsigned:无符号类型复合类型:struct:结构体类型union:共用体类型enum:枚举类型类型定义:type......
  • 【C语言】【二级】移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p的数组元
    题目请编写函数fun,函数的功能是:移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。例如,一维数组中的原始内容为:1,2,3,4,5,6,7,8,9,10;p的值为3。移动后,一维数组中的内容应为:5,6,7,8,9,10,1,2,3,4。考点一维数组、......
  • 【C语言】【二级】将所指字符串中所有下标为奇数位置上的字母转换成大写
    题目请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换成大写(若该位置上不是字母,则不转换)。例如,若输入"abc4EFG",则应输出"aBc4EFG"。考点考点:指针、ASCII码、数组和循环语句。解法:通过循环语句依次判断数组下标为奇数的元素是否为小写字母......
  • chap5 循环 chap6 字符串
    chap5循环for循环和循环范围-1.基于提供的范围,重复执行特定次数的操作-实例foriinrange(m,n): total+=x默认左闭右开-2.range():省略第一个参数:默认起始为0加入第三个参数:为步长stepfor嵌套循环```defstars(n,m):#输出n*m的星型矩阵forrow......
  • 一文即懂组态图是什么?组态图怎么画?
    随着计算机技术和工业自动化水平迅速提高,而车间现场种类繁杂的控制设备和过程监控装置使得传统的工业控制软件无法满足用户的各种需求。在“组态”概念出现之前,工程技术人员需要通过编写程序来实现某一任务,不但工作量大、周期长,而且容易犯错误,还不能保证工期。什么是组态? “组......
  • [good]c语言中各种类型
    #include<stdio.h>#include<stdlib.h>#include<string.h>#include<stdarg.h>#include<assert.h>#include<math.h>#include<time.h>#include<limits.h>#include<float.h>#include<ctype.h>#i......
  • C语言小项目-通讯录
    对C语言的学习研究也有一段时间了,今天做一个小项目“通讯录”,来回顾之前所学。文件结构通讯录这个项目需要三个文件:1.test.c用于测试2.contact.c用于实现3.contact.h声明函数需求描述1.该通讯录要能存放1000个好友的信息2.信息要包含:姓名、电话、性别、住址、年龄3.增加好友信息......
  • 《初学C语言第11天》
    ////求定积分-----------已给函数接口//#include<stdio.h>//#include<stdlib.h>//#include<math.h>//doublesquare(doublex)//平方//{//  returnx*x;//x^2//}//doublecube(doublex)//立方//{//  returnx*x*x;//x^3//}///*你编写的积分函数嵌入在这里开始*//......
  • 第九次上机内容 嵌套循环
    题目:浏览(chaoxing.com) (一)选择题1、D(二)填空题2、53、-14、115、852(三)程序阅读题6、17这里else有什么意义?7、 所给代码等同于intmain(void){for(inti=1;i<=5;++i){if(i%2)cout<<'*'<<'#';elsecontinue......