【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语言】循环语句
C语言中循环语句的相关知识点
28 2
【C语言】循环语句
|
2天前
|
存储 算法 C语言
C语言手撕实战代码_循环单链表和循环双链表
本文档详细介绍了用C语言实现循环单链表和循环双链表的相关算法。包括循环单链表的建立、逆转、左移、拆分及合并等操作;以及双链表的建立、遍历、排序和循环双链表的重组。通过具体示例和代码片段,展示了每种算法的实现思路与步骤,帮助读者深入理解并掌握这些数据结构的基本操作方法。
|
23天前
|
存储 缓存 编译器
【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)(下篇)
scanf处理⽤⼾输⼊的原理是,⽤⼾的输⼊先放⼊缓存,等到按下回⻋键后,按照占位符对缓存进⾏解读。 解读⽤⼾输⼊时,会从上⼀次解读遗留的第⼀个字符开始,直到读完缓存,或者遇到第⼀个不符合条件的字符为⽌。
|
23天前
|
存储 C语言
【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)(上篇)
printf 的作⽤是将参数⽂本输出到屏幕。它名字⾥⾯的 f 代表 format (格式化),表⽰可以定制输出⽂本的格式。
|
23天前
|
机器学习/深度学习 C语言
【C语言篇】循环语句详解(超详细)
while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳出循环.
|
1月前
|
C语言
C语言的循环语句
C语言的循环语句
31 6
|
2月前
|
编译器 C语言
【C语言初阶】指针篇—下
【C语言初阶】指针篇—下
|
2月前
|
存储 C语言
【C语言初阶】指针篇—上
【C语言初阶】指针篇—上
|
3月前
|
存储 C语言
c语言scanf函数用法
c语言scanf函数用法
|
2月前
|
Linux C语言
【编程小实验】C语言实现:无限循环写入文本文件,支持Ctrl+C中断与数据追加(附完整源码)
在Linux中,文件I/O(输入/输出)是程序与文件进行交互的基本方式,包括读取文件内容和向文件写入数据。这通常通过标准的C库函数来实现,下面是一些基本的文件读写操作和代码示例。