【C语言初阶】循环语句的具体用法,有这篇博客就够了2

简介: 【C语言初阶】循环语句的具体用法,有这篇博客就够了

for循环中的break和continue

和在while循环中类似,但是还是有部分差异的,我们来看看下面两段代码:

//代码1
#include <stdio.h>
int main()
{
  int i = 0;
  for (i = 1; i <= 10; i++)
  {
    if (i == 5)
      break;
    printf("%d ", i);
  }
  return 0;
}
//代码2
#include <stdio.h>
int main()
{
  int i = 0;
  for (i = 1; i <= 10; i++)
  {
    if (i == 5)
      continue;
    printf("%d ", i);
  }
  return 0;
}

与whlie中代码类似,但是运行结果却不尽相同:

1cfa85fea50545c388525595a21b9ff4.png

26fb6d77aa174ff0aa63f40f5c0e0cbc.png


代码1是相同的这里不做讨论,代码2的运行结果却有较大差异。


原因:


在for循环中,我们可以看到,即使continue跳过了i==5这次循环,但由于i是在for语句中表达式3上就已经++了,所以跳过5也不会对后面的运行有什么影响,只需省略对5的打印即可。


for语句的循环控制变量

建议:


1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。

2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。


int i = 0;
//前闭后开的写法
for(i=0; i<10; i++)
{}
//两边都是闭区间
for(i=0; i<=9; i++)
{}

这两种写法都是对的,但是对于初学者来很容易误判循环需要执行的次数,此时采用前闭后开区间的写法就能很好的判断出循环的次数。

也就是说,此时循环的次数就等于你后开(i<10)中的那个数,对上面代码来说就是10次!

for循环中的一些变体

1.可省略

//代码1
for(;;)
{
printf("hehe\n");
}

for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,容易导致问题

2.可嵌套

//代码2
  int i = 0;
  int j = 0;
  //这里打印多少个hehe?
  for(i=0; i<10; i++)
 {
    for(j=0; j<10; j++)
   {
     printf("hehe\n");
}

此时打印的hehe数应该为10*10个

3.可使用多个变量控制循环

//代码4-使用多余一个变量控制循环
int x, y;
  for (x = 0, y = 0; x<2 && y<5; ++x, y++)
 {
    printf("hehe\n");
 }

3.do-while循环

与while循环类似,但是它是先执行一次,再判断循环条件。

语法

do

循环语句;

while(表达式);


执行流程

2a246500a3ee48338b153ead94ca1b50.png

stmt表示需要执行的语句,expr表示判断循环的条件。

do-while语句的特点

循环至少执行一次,使用的场景有限,所以不是经常使用。

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

do-while语句中的break与continue

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

实际使用下来与while类似,我就不具体展开了。

4.goto语句

C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。

从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。

但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。

例如:一次跳出两层或多层循环。

多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。

goto语言真正适合的场景如下:

for(...)
  for(...)
 {
    for(...)
   {
      if(disaster)
        goto error;
   }
 }
error:
if(disaster)
    // 处理错误情况

这样就能直接跳出多层循环直接来到error了

整蛊游戏-关机程序

下面我们来讲一个goto实战的小例子–关机程序

注意:这里博主用切身经历告诉大家,如果不想遭到毒打,就不要整蛊室友!!切记切记!!尤其是在ta打游戏的时候。

代码如下:

#include<stdlib.h>
#include<windows.h>
int main()
{
  char i[10] = { 0 };
  system("shutdown -s  -t  60");//系统指令让电脑关机
  again:
  printf("你的电脑将在一分钟后关机,请输入“我是猪”停止关机\n请输入:>");
  scanf("%s", &i);
  if ((strcmp(i, "我是猪") != 0))//判断是否输入“我是猪”
    goto again;
  else
    system("shutdown -a");//停止关机
  return 0;
}

当然,while也可以实现:

#include <stdio.h>
#include <stdlib.h>
int main()
{
  char input[10] = { 0 };
  system("shutdown -s -t 60");
  while (1)
  {
    printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
    scanf("%s", input);
    if (0 == strcmp(input, "我是猪"))
    {
      system("shutdown -a");
      break;
    }
    return 0;
  }
}

这种算是比较好心的了,你如果想恶搞的话完全可以错误的提示ta,ta永远都猜不对。甚至能把这个程序安装在系统里只要电脑一启动就运行该程序。

当然这里博主墙裂不推荐大家这么做,博主上回这么做已经是18年前了,现在17岁了。

关于上面的系统指令啥的,只需要了解即可,后面有机会会讲的,对于初学者来说,上面都想学就只会从入门到入土

cf6ebf050f6a4b76a108aaf8c729ba26.jpg

二.循环语句的实战应用

鉴于篇幅原因以及以前都写过相关博客,这里就不多赘述了,咱们直接贴博客链接,感兴趣的可以来看看:

【C语言】三子棋详解(包教包会的那种)

【C语言】万字教学,带你分步实现扫雷游戏(内含递归函数解析),剑指扫雷,一篇足矣

【C语言】带你玩转经典算法用二分法在一个有序数组中查找某个数

【C语言】如何打印某个范围中满足某些条件的数(素数,闰年,水仙花数等)

总结

今天的内容就到此结束啦,循环中我见过以及遇到过的所有知识以及易错点都在里面。

如果你有任何疑问欢迎在评论区指出或者私信我,咱们下次再见啦!

新人创作不易,如果今天的内容对你有所帮助的话,请点个三连再走吧,你们的支持就是我更新的动力,再次感谢大家的支持!!!

3f3dcaf156eb427e8fb4f8c272ae8a18.jpg

目录
相关文章
|
2月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
78 5
|
20天前
|
IDE 编译器 开发工具
【C语言】全面系统讲解 `#pragma` 指令:从基本用法到高级应用
在本文中,我们系统地讲解了常见的 `#pragma` 指令,包括其基本用法、编译器支持情况、示例代码以及与传统方法的对比。`#pragma` 指令是一个强大的工具,可以帮助开发者精细控制编译器的行为,优化代码性能,避免错误,并确保跨平台兼容性。然而,使用这些指令时需要特别注意编译器的支持情况,因为并非所有的 `#pragma` 指令都能在所有编译器中得到支持。
93 41
【C语言】全面系统讲解 `#pragma` 指令:从基本用法到高级应用
|
3月前
|
C语言
C语言判断逻辑的高阶用法
在C语言中,高级的判断逻辑技巧能显著提升代码的可读性、灵活性和效率。本文介绍了六种常见方法:1) 函数指针,如回调机制;2) 逻辑运算符组合,实现复杂条件判断;3) 宏定义简化逻辑;4) 结构体与联合体组织复杂数据;5) 递归与分治法处理树形结构;6) 状态机管理状态转换。通过这些方法,可以更高效地管理和实现复杂的逻辑判断,使代码更加清晰易懂。
242 88
|
3月前
|
安全 C语言
C语言循环的使用注意点
在C语言中,合理使用循环对于编写高效、安全的代码至关重要。以下是几点建议:确保循环条件正确以避免无限循环;每次迭代时正确更新循环变量;恰当使用`break`和`continue`控制执行流程;注意嵌套循环中的变量作用域;简化循环体内逻辑;根据需求选择合适的循环类型;注意数据类型以避免溢出;保持良好的缩进和注释习惯;减少重复计算以提升性能;确保循环终止条件明确。遵循这些建议,可以提高代码质量和可维护性。
241 88
|
2月前
|
C语言
【c语言】循环语句
循环结构是C语言中用于简化重复操作的重要工具,主要包括while循环、do-while循环和for循环。while循环是最基本的形式,通过不断检查条件来决定是否继续执行循环体。do-while循环则先执行循环体,再检查条件,至少执行一次。for循环逻辑更复杂,但使用频率最高,适合初始化、条件判断和更新变量的集中管理。此外,循环中还可以使用break和continue语句来控制循环的提前终止或跳过当前迭代。最后,循环可以嵌套使用,解决更复杂的问题,如查找特定范围内的素数。
53 6
|
2月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向
|
2月前
|
算法 编译器 C语言
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
|
2月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
20 0
|
2月前
|
小程序 C语言
初识C语言:走近循环
初识C语言:走近循环
|
3月前
|
C语言
【C语言基础考研向】08判断语句与循环语句
本文介绍了C语言中的关键编程概念:首先解析了关系表达式与逻辑表达式的优先级及计算过程;接着详细说明了`if-else`语句的使用方法及其多分支和嵌套应用;然后讲解了`while`循环与`for`循环的语法和注意事项;最后介绍了`continue`和`break`语句在控制循环中的作用和示例代码。