C语言入门篇(四)上

简介: C语言入门篇(四)上

前言

  有的时候,我们可能需要多次执行同一块代码。

  一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。

  编程语言提供了更为复杂执行路径的多种控制结构。

  循环语句则允许我们多次执行一个语句或语句组。

1. for循环


1.1 语法

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

表达式1为初始化部分,用于初始化循环变量的。

表达式2为条件判断部分,用于判断循环时候终止。

表达式3为调整部分,用于循环条件的调整。


如果判断部分省略,意味着判断恒真。


实例:使用for循环在屏幕上打印1-10的数字


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

for循环的执行流程图:

     85283269dc3ac75df64e49fbb3fdb46c_59ba0164a34c40dfae6ca04ad77f5d48.png

for语句只控制一条语句,控制多条语句要加{}。


1.2 break和continue在for循环中

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

输出结果:

e6063a6f26f153f3c3a2b3fd88b3bb30_969426923980429c9d414bbe37c9128b.png

为什么到8就结束了?


break在for循环中的作用:


其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。

所以:for中的break是用于永久终止循环的。


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

这段代码的输出结果又会是什么?

0a6e794a5de0795388c49beb32e39afd_a61d038694954ef7baae046d34de3a04.png

continue在for循环中的作用:


continue是用于终止本次循坏的,也就是本次循环中continue后边的优码不会再执行,

而是直接跳转到for语句的判断部分。进行下一次循环的入口判断。


1.3 for语句的循环控制变量

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

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

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


1.4 一些for循环的变种

//代码1
for(;;)
{
  printf("hh\n");//无限循环打印hh
}
//for循环中的初始化部分、判断部分、调整部分可以省略。
//初始化和调整部分的省略就是啥都不做
//判断部分省略了,意味着判断是恒为真的
//建议不要随便省略
//代码2
int i=0;
int j=0;
for(i=0;i<10;i++)
{
  for(j=0;j<10;j++);
  {
    printf("hh\n");//打印10个hh
  }
}
//代码3
int i=0;
int j=0;
for(;i<10;i++)
{
  for(;j<10;j++)
  {
    printf("hh\n");//同代码2
  }
}
//代码4-使用多于一个变量控制循环
int x, y;
  for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)
  {
    printf("hh\n");//打印两个hh
  }

下面这段代码会打印多少个hh?


#include<stdio.h>
int main()
{
  int i = 0;
  int j = 0;
  //i=0 1 
  for (i=0; i < 4; i++)
  {
    for (j=0; j < 4; j++)
    {
      printf("hehe\n");
    }
  }
  return 0;
}

1.5 练习

请问循环要循环多少次?


#include<stdio.h>
int main()
{
  int i = 0;
  int k = 0;
  for (i = 0, k = 0; k = 0; i++, k++)
  {
    k++;
    printf("hh");
  }
  return 0;
}

for循环可以嵌套使用:

407f38af6c06386ced6ad31baf744b8d_80683ca4504949a589f949711a616efd.png


2. while循环


2.1 语法

while(表达式)
  循环结构;

while语句执行的流程:

b051263881a8f2964dbb473270c761d7_110686d0ba3c48d0983fa81fd8945948.png      

     

实例:使用while循环在屏幕上打印1-10的数字

#include<stdio.h>
int main()
{
  int i = 1;//初始化
  while (i <= 10)//判断
  {
    printf("%d ", i);
    i++;//调整
  }
  return 0;
}


2.2 break介绍

#include<stdio.h>
int main()
{
  int i = 1;
  while (i <= 10)
  {
    if (i == 5)
      break;//(跳出)终止循环
    printf("%d ", i);
    i = i + 1;//i++;
  }
  return 0;
}

c17bb6b7fc0d7cba8eed9df291ddc563_d9ea9f8db84e43899753cc7a42e0eb92.png


相关文章
|
安全 开发工具 芯片
基于VHDL语言的乒乓游戏机电路的设计_kaic
基于VHDL语言的乒乓游戏机电路的设计_kaic
|
存储 缓存 Java
|
11月前
|
人工智能 大数据 云计算
【AI系统】AI 发展驱动力
本文介绍了阿里云在2023年云栖大会上发布的多项新技术和产品,涵盖云计算、大数据、人工智能等领域,展示了阿里云最新的技术成果和行业解决方案,助力企业数字化转型。
|
11月前
|
Java
如何捕获和处理 EOFException 异常
EOFException 异常通常在尝试从输入流中读取数据但已到达文件末尾时抛出。要捕获和处理该异常,可以使用 try-catch 语句块,在 catch 块中进行相应的错误处理或提示。例如: ```java try { // 读取数据的代码 } catch (EOFException e) { System.out.println(&quot;已到达文件末尾&quot;); } ```
534 5
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
455 10
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
12月前
|
运维 监控 API
深入了解微服务架构:优势与挑战
【10月更文挑战第7天】深入了解微服务架构:优势与挑战
|
NoSQL MongoDB 数据库
国内唯一 阿里云荣膺MongoDB“2024年度DBaaS认证合作伙伴奖”
阿里云连续第五年斩获MongoDB合作伙伴奖项,也是唯一获此殊荣的中国云厂商。一起学习MongoDB副本集的选举机制以及可能会出现的特殊情况。
国内唯一 阿里云荣膺MongoDB“2024年度DBaaS认证合作伙伴奖”
|
小程序 安全
微信小程序自定义底部导航栏
微信小程序自定义底部导航栏
|
缓存 前端开发 JavaScript
如何优化前端网页加载速度:实用技巧大揭秘
在当今互联网时代,快速加载的网页是用户体验的关键。本文将介绍一些实用的前端优化技巧,从减少HTTP请求到使用CDN加速,帮助开发人员提高网页加载速度,提升用户满意度。
|
开发框架 缓存 Java
Spring AOP用法详解
Spring AOP用法详解
366 0