C语言中的循环语句(while、dowhile、for)

article/2025/9/15 21:58:22

文章目录

      • goto语句
      • 循环语句的类型
      • while语句
          • 死循环
          • 语句的嵌套
      • do..while语句
      • for语句

goto语句

如果我们想要实现从0输出到n,如果要写0~100的话那我们就要写100个printf,这样非常麻烦,也
不现实,在汇编中当程序print完了我们可以用一个jmp让它回去继续输出,在C语言中一样可以实现,
我们可以用goto语句。

例子:

#include <stdio.h>			//头文件
#include <windows.h>void function(int x)		//定义函数
{int i = 0;				//定义变量
B:							//设置返回点printf("%d \n",i);		//输出i的值i++;					//在i的基础上进行自加if(i<=x)				//进行判断goto B;				//返回到Breturn;					//函数结束
}void main()					//程序入口
{function(10000);		//调用函数并传参return;				//程序结束
}

运行结果:
在这里插入图片描述
我们可以去看一下反汇编,这里的goto对应的就是jmp:
在这里插入图片描述

循环语句的类型

在C语言中循环语句的类型有以下三种:

while语句do..while语句for语句

while语句

while语句格式while(表达式)
{	语句;
}

刚才的例子在这里用while来实现也很简单:

#include <stdio.h>			//头文件
#include <windows.h>void function(int x)		//定义函数
{int i = 0;				//定义变量
A:	while(i<=x)				//开始循环{printf("%d\n",i);	//若循环判断成立则输出i的值i++;				//i自加,并跳回到A,直至判断不成立跳出while语句}return;					//函数结束
}void main()					//程序入口
{function(10000);		//调用函数并传参return;				//程序结束
}

这里写A纯属是为了方便理解,正常写完保存是会报警告的,看一下运行结果:
在这里插入图片描述

死循环

while判断是否进入循环就两个结果,0和1,如果是0就跳出去,如果是1就跳进去,那么死循环就不难理解了,while(1)就行了,程序就会无限输出,直至死机。

例子:

#include <stdio.h>			//头文件
#include <windows.h>void function(int x)		//定义函数
{int i = 0;				//定义变量while(1)				//开始循环(无限循环){printf("%d\n",i);	//若循环判断成立则输出i的值i++;				//i自加,并跳回到A,直至判断不成立跳出while语句}return;					//函数结束
}void main()					//程序入口
{function(10000);		//调用函数并传参return;				//程序结束
}

运行结果:
在这里插入图片描述

语句的嵌套
格式while(表达式)
{其他语句
}

现在我们把例子改一下,要求输出1~100内所有的偶数:

#include <stdio.h>			//头文件
#include <windows.h>void function(int x)		//定义函数
{int i = 0;				//定义变量while(i<=x)				//开始循环{if(i%2 == 0)		//i的值对2取余,若为零则进行输出{printf("%d\n",i);	//若循环判断成立则输出i的值}i++;					//i自加,并跳回到A,直至判断不成立跳出while语句	}return;					//函数结束
}void main()					//程序入口
{function(100);			//调用函数并传参return;				//程序结束
}

运行结果:
在这里插入图片描述

do…while语句

do..while语句格式do
{语句
}while(表达式);当程序运行到while时判断若为零则跳回继续执行,反之跳出,即使判断不成立,也会执行一次。

例子:

#include <stdio.h>				//头文件
#include <windows.h>void main()						//程序入口
{int day = 1;				//定义局部变量do							//开始循环{printf("%d\n", day);	//输出参数day++;					//参数自加}while (day <= 31);			//判断是否大于31,大于跳出循环
return;							//程序结束
}

运行结果:

在这里插入图片描述

在汇编中,do…while与while的区别是,while先进行判断,在进行输出,而do…while则是,先输出一次,在进行判断,若符合则输出,不符合则跳出循环。

for语句

格式
for(表达式1;表达式2;表达式3)
{需要执行的代码4
}这里表达式1与表达式3没有什么特定的要求,但是表达式2必须要有返回值。执行顺序:
第一次:1243
第二次:243
第三次:243
...
若表达式2不成立则跳出循环,执行后面的语句。

例子:

#include <stdio.h>			//头文件
#include <windows.h>void Q1()					//定义函数Q1
{printf("Q1 \n");
}
int Q2()					//定义函数Q2
{printf("Q2 \n");return -1;
}
void Q3()					//定义函数Q3
{printf("Q3 \n");
}
void testfor()				//定义函数testfor
{for(Q1();Q2();Q3())		//开始for循环,调用前面的三个函数{printf("Q4 \n");	//执行完Q1执行Q2,条件符合执行Q4,在执行Q3}return;					//循环结束
}void mian()					//程序入口
{testfor();				//调用testfor()函数return;					//程序结束
}

这里可以看到,程序的运行顺序是1、2、4、3、2、4、3、2、4、3…:
在这里插入图片描述

现在我们可以用for语句来输出1~100的值了:

#include <stdio.h>				//头文件
#include <windows.h>void testfor()					//定义函数
{for(int i = 0;i>100;i++)	//定义for循环的三个表达式{printf("%d \n");		//输出结果}return;						//循环结束
}void mian()						//程序入口
{testfor();					//调用testfor()函数return;						//程序结束
}

这里有两点需要说明:

第一、for循环的三个表达式可以省略,但是分号不可以省略。

例如:

for(;;)
{printf("默认成立 \n");
}
for(;-1;)
{printf("第二个表达式非零就成立");
}
for(;0;)
{printf("不成立 \n");
}

第二、for循环的第一三表达式可以使用逗号。

例如:

int x;
int y;
int z;for(x = 0,y = 0,z = 0:x<10;x++,y++,z++)
{printf("%d %d %d \n",x,y,z);
}

http://chatgpt.dhexx.cn/article/W6vFQaGR.shtml

相关文章

【汇编 C】循环语句goto、while、dowhile、for

目录 前言 一、什么是循环语句&#xff1f; 二、goto语句实现循环 goto底层汇编 三、while循环语句 while底层汇编 四、dowhile语句 do while底层汇编 五、for循环 for语句的几种写法 for底层汇编 总结 结语 封面 前言 本教程内容可能会涉及到汇编&#xff0…

【C语言】循环语句(do while循环)

简单不先于复杂&#xff0c;而是在复杂之后。 目录 do while循环 do 语句的用法 执行流程 do语句的特点 go to语句 do while循环 do 语句的用法 while循环和for循环都是入口条件循环&#xff0c;即在循环的每次迭代之前检查测试条件&#xff0c;所以有可能根本不执行循环…

while和do while的用法区别

前言 在上一篇文章中&#xff0c;壹哥给大家讲解了循环的概念&#xff0c;并重点给大家讲解了for循环的使用。但在Java中&#xff0c;除了for循环之外&#xff0c;还有while、do-while、foreach等循环形式。今天小千就再用一篇文章&#xff0c;给大家讲解while循环的使用。 本文…

循环语句—do…while循环

目录 3.do……while循环语句 3.1do……while循环语句格式 3.2三种循环的区别 3.3总结三种循环的区别 3.do……while循环语句 3.1do……while循环语句格式 基本格式&#xff1a; do { 循环体语句&#xff1b; } while&#xff08;条件判断语句&#xff09;&#xff1b; …

While语句与do...while语句

循环结构之while语句&#xff1a; while(表达式&#xff09; {语句} 注意&#xff1a;1.while循环的特点是先判断条件表达式&#xff0c;后执行循环体语句。 2.“语句”就是循环体。循环体可以是一个简单的语句&#xff0c;可以是复合语句&#xff08;用花括号括起来的若干语…

C/C++之while(do-while)详细讲解

目录 while循环有两个重要组成部分&#xff1a; while 是一个预测试循环 无限循环 do-while 循环 while循环有两个重要组成部分&#xff1a; 进行 true 值或 false 值判断的表达式&#xff1b;只要表达式为 true 就重复执行的语句或块&#xff1b; 图 1 显示了 while 循环的…

do{...}while(0)的用法

首发于微信公众号&#xff1a;【码农在新加坡】&#xff0c;欢迎关注。 个人博客网站&#xff1a;do{...}while(0)的用法 零.导引 第一次见到 do{...}while(0)是在学习libevent的时候&#xff0c;看到里面有很多类似 #define TT_URI(want) do { \char *ret evhttp_uri_…

if,while选择结构和while,dowhile,for循环的使用

什么是if和while选择结构 if 选择结构是根据句条件判断之后再做处理的一种语法结构&#xff0c; 语法如下&#xff1a; while是一种先判断再执行循环体的结构&#xff1b; 当while循环条件为真时才执行循环体&#xff0c;然后再判断循环条件&#xff0c;如果条件为真&#xf…

while及do while语句

编写程序时&#xff0c;许多问题都要用到循环控制。循环结构也是结构化程序设计的基本结构之一&#xff0c;因此熟练地掌握循环结构是程序设计最基本的要求。While循环、do while循环、for循环语句&#xff0c;3种循环语句在一般情况下可以相互转换 While 及dowhile语句 Whil…

代码执行顺序之循环执行:forwhiledowhile嵌套循环

代码执行顺序之循环执行 循环执行的分类 for循环while循环dowhile循环 for循环 语法&#xff1a; for(循环初始化表达式&#xff1b;循环条件表达式&#xff1b;循环后的操作表达式){ ​ // 循环体 } 执行步骤分析&#xff1a; 循环初始化表达式最先执行&#xff0c;并且只执…

dowhile的学习

dowhile的学习 dowhile 的概念及他与while的区别 package javaxunhuanjiegou; ​ public class DoWhile {public static void main(String[] args) {int a 0;int sum 0;do {sum sum a;a;} while (a < 100);System.out.println(sum);} } ​ 我们来跟直观的感受一下 于…

循环结构 --> do while循环

do while循环 do {循环体;} while(条件表达式);执行循环体 > 判断条件表达式是否成立> 若成立&#xff0c;则执行循环体 > 判断条件表达式是否成立> 若不成立&#xff0c;则循环结束do while循环主要用于至少执行一次循环体的场合中。package demo;/*编程实现do wh…

do while循环和whil循环(内含流程图)

C语言的三大循环语句除去for循环语句还剩下do while和while循环&#xff0c;因为这两个很相似所以这里放在一起讲解。希望读完本文能对你有所帮助。 do while循环和whil循环 一、do...while二、while 一、do…while do while的语法循环结构如下所示。 do while的逻辑循环结构…

SQL中join操作后面的on与where的区别

join关键字的作用是将多个表按一定的条件联合起来&#xff0c;从而可以实现从多个表中获取数据 在join后面可以接on条件和where条件&#xff0c;在这里我主要就是说这两者之间的差别 建立两张简单的用来测试的表并添加数据&#xff0c;如下所示&#xff0c;一张表名为id_name…

MySql 各种join的使用方法

具体详解如下 1 INNER JOIN(内连接) SELECT * FORM TABLE_A A INNER JOIN TABLE_B B ON A.KEY B.KEY 2 LEFT JOIN (左连接) SELECT * FORM TABLE_A A LEFT JOIN TABLE_B B ON A.KEY B.KEY 3 RIGHT JOIN (右连接) SELECT * FROM TABLE_A A RIGHT TABLE_B B ON A.KE…

SQL 中JOIN ON 的AND条件设置

关于在A LEFT JOIN B ON A.id B.id 后面跟AND 条件的测试。 有如下的结构数据&#xff1a; 注意此LEFT ON 跟AND 限制A表的场景&#xff1b; dat a.sql 1.43KB 有如下的表结构 使用SQL进行查询&#xff1a; &#xff08;1&#xff09;SELECT * FROM table_name a LEFT J…

简单说说SQL中Join的使用

最近工作中&#xff0c;遇到了一起由于慢SQL引起DB CPU > 90% &#xff0c;数据库hang住。。最终导致其他业务查询统统失败。 细看下来是由于几张大表Join关联查询引起的&#xff0c;故障本身很常见&#xff0c;不过让我想到有必要讲讲如何规避Join的问题。 以下的讨论都是基…

SQL-JOIN全解析

SQL-JOIN全解析 一、SQL JOIN的作用是什么&#xff1f;二、四种JOIN的区别三、如何使用各种join&#xff08;一&#xff09;准备测试数据&#xff08;二&#xff09;左连接&#xff08;三&#xff09;右连接&#xff08;四&#xff09;内连接&#xff08;五&#xff09;外连接 …

SQL中join语句详解

1.inner join(内连接) 只返回匹配的行。 select * from table_a a inner join table_b b on a.name b.name 2.left join(左外连接) 返回左表的全部数据&#xff0c;和右表中满足on条件的行&#xff0c;如果左表的行在右表中没有匹配的数据&#xff0c;那么这一行中右表对应…

SQL Server 数据库常用操作:多表联查(JOIN...ON语句的使用)

1.使用传统连接方式查询 (1). 有两张表Book(BookID,BookName,TypeID,AuthorID,…)&#xff0c;BookType(TypeID,TypeName)&#xff0c;查询每本书的书名和图书类型。 SELECT BookName, TypeName FROM Book, BookType WHERE Book.TypeID BookType.TypeID(2). 有三张表Book(Boo…