手写C语言之分支循环语句-语法详细版(10)

简介: 手写C语言之分支循环语句-语法详细版

前期我们介绍了while循环,将while循环的场景运用和各方面的具体案例总体的介绍一下,我们知道while循环的框架就是通过初始化、判断、递增循环进行,但是在实际的应用场景中,我们发现这样的语法并不是适用于所有的场景,那么我们再想有没有比较智能的结构将着三个重要的东西集成在一起呢?


for循环

那么就需要使用到for循环

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


这样一个语句就满足了初始化,判断和调整变量的功能,而且在实际的场景使用当中for循环也是经常被用到的。


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


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


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


使用for循环打印1-10以内2的倍数

首先,根据题目的要求我们知道范围是1-10,需要找到2的倍数,那么也就是等同于递增变量与2是否可以整除,我们可以使用到取余操作符,作为条件。


#include <stdio.h>
int main()
{
  int i = 0;
  int num_1 = 0;
  int num_2 = 0;
  for (int i = 1; i <= 10; i++)
  //这里使用后++,是因为它是先赋值再去运算,这样才能调用初始化的值
  //在for循环中一般都是使用的后++
  {
  //printf("%d", i);
  if (i % 2 == 0)
  {
    printf("%d\n",i);
    ++num_1;//注意这里使用前++,是因为它是先运算再去赋值
  }
  else
  {
    ++num_2;
  }
  }
  printf("一共有%d个2的倍数!",num_1);
  return 0;
}

image.png


注意,这里的前++,后++在编程中我们虽然用的较少,但是考试和笔试过程中,我们遇到的大多是这样的考点。

for循环-continue和break

我们发现在for循环中也可以出现break和continue,他们的意义和在while循环中是一样的。但是还是有些差异:

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

image.png


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

image.png


大体上,continue和break的思想是和while循环比较类似的,其中while循环的continue很有可能将循环弄成死循环,而for循环的continue是将其跳到for循环的调整部分。

for语句的循环控制变量


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

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

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



前面的是执行10次,编码风格让人一目了然,后面的代码虽然也是执行10次,但是需要我们去理解这个代码才可以明白,所以在编程过程中,推荐使用第一种,前闭后开的风格进行书写。


关于for循环的一些案例

for (;;)

{

 printf("王小王-123\n");

}



这里会出现死循环,因为没有判断条件,而且这样的代码在编程中很少会这样写,就算遇到也是在你的考试题目中出现。


int i = 0;
  int j = 0;
  int num = 0;
  //这里打印多少个王小王-123?
  for (i = 0; i < 10; i++)
  {
  for (j = 0; j < 10; j++)
  {
    printf("王小王-123\n");
    num += 1;
  }
  }
  printf("一共打印了%d个王小王-123!\n",num);



这里是在循环中嵌套了一层循环,那么最终会打印多少次呢?10*10?

image.png


//如果省略掉初始化部分,这里打印多少个王小王-123?
  for (; i < 10; i++)
  {
  for (; j < 10; j++)
  {
    printf("王小王-123\n");
  }
  }


image.png


为什么是10次呢?首先我们由于没有初始化i和j,那么导致第一次i进去也是0,j也是0,但是,这个时候j进入到了第二次的循环中,就在这个循环中打印了10次,当第二次进入循环时候,由于j没有被初始化,这个时候无法满足条件,所以就不能打印,最后就打印了10次!


int x, y;
  for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)
  {
  printf("%d",y);
  printf("王小王-123\n");
  }



使用多余一个变量控制循环

真题演练

//请问循环要循环多少次?
#include <stdio.h>
int main()
{
  int i = 0;
  int k = 0;
  for (i = 0, k = 0; k = 0; i++, k++)
  k++;
  return 0;
}



看到这个代码,首先我们应该分析的是,哪里是初始化,哪里是判断条件,哪里是调整部分!日条件都无法满足,所以也就没有循环次数!还要注意的是这里是=不是==!


do…while()循环

do

循环语句;

while(表达式);



它和while循环的区别在于,一个是至少执行一次,也就是说无论条件是否满足,都将要执行一次循环体的内容。


image.png


do while循环中的break和continue


image.png

image.png

在C语言中,我们前期编程的时候,一定要多尝试,一旦语句的位置不同,那么结果也会有千差万别!


相关文章
|
2月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
77 5
|
2月前
|
C语言
【c语言】分支语句
C语言通过三种基本结构——顺序、选择和循环,构建复杂的程序逻辑。本文主要介绍了C语言的选择结构,即if-else语句及其变体,包括简单的if语句、if-else组合、else if多分支判断、嵌套if以及解决悬空else问题的方法。此外,还详细讲解了逻辑运算符和关系运算符的使用,以及如何利用条件操作符简化逻辑判断。最后,文章对比了if-else与switch语句在实现多分支逻辑时的应用,并解释了switch语句中的break和default关键字的作用。
33 8
|
2月前
|
C语言
【c语言】循环语句
循环结构是C语言中用于简化重复操作的重要工具,主要包括while循环、do-while循环和for循环。while循环是最基本的形式,通过不断检查条件来决定是否继续执行循环体。do-while循环则先执行循环体,再检查条件,至少执行一次。for循环逻辑更复杂,但使用频率最高,适合初始化、条件判断和更新变量的集中管理。此外,循环中还可以使用break和continue语句来控制循环的提前终止或跳过当前迭代。最后,循环可以嵌套使用,解决更复杂的问题,如查找特定范围内的素数。
45 6
|
2月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向
|
2月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
17 0
|
2月前
|
小程序 C语言
初识C语言:走近循环
初识C语言:走近循环
|
C语言 SDN
《C语言及程序设计》程序阅读——用循环累加
返回:贺老师课程教学链接  写出下面程序运行的结果。(1) #include &lt;stdio.h&gt; int main( ) { int i,m=1; for(i=5; i&gt;=1; i--) { m=(m+1)*2; printf("m=%d\n",m); } return 0; } (2)#include
797 0
|
C语言
《C语言及程序设计》实践项目——用循环累加
返回:贺老师课程教学链接  【项目1:分数的累加】编程序,输出1/3-3/5+5/7-7/9…+19/21的结果提示:如果直接解决上面的问题有困难,可以设计一条“由易到难”的路线,逐渐解决其中要解决的问题,让自己的思路明朗起来。(1)1+2+...+20  ——这个应该会(2)1+1/2+1/3+…+1/20  ——分数的累加,注意两个整型相除,商也为整型,而显然求和结果应该是小数(3)1/2
987 0
|
C语言
C语言及程序设计初步例程-34 用循环累加
贺老师教学链接  C语言及程序设计初步 本课讲解 求1+1/2+1/3+…+1/20? #include &lt;stdio.h&gt; int main() { int i=1; double sum=0.0, t; while (i&lt;=20) { t=1.0/i; sum=sum+t; i++;
917 0
|
13天前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
34 10