C语言-流程控制语句:for循环语句、while和do…while循环语句;

本章概述思维导图:

C语言流程控制语句

在C语言中,循环控制语句用于重复执行一段代码块,就是重复的执行某件事情直到满足特定条件为止就是。C语言提供了三种基本的循环结构:for循环控制语句、while循环控制语句、do...while循环控制语句;

for循环控制语句

for循环控制语句由四条基础语句构成:开始条件(初始化语句)、结束条件(条件判断语句)、控制开关(条件控制语句)、执行内容(循环体语句);

for循环语句执行过程:

  1. 执行初始化语句;

  2. 执行条件判断语句,判断其结果是否成立(成立:执行循环体语句)(不成立:结束循环);

  3. 执行条件控制语句;

  4. 回到第二步继续执行条件判断语句;

注:1. 初始化语句只执行一次;2. 判断语句成立,循环继续;3. 判断语句不成立,循环结束;

代码示例:

cpp 复制代码
#include <stdio.h>         
int main()
{
	for(int i=0;i<10;i++)
	{
		printf("喜欢在代码的世界遨游\n");
	}
	return 0;
}

//代码运行结果:
喜欢在代码的世界遨游
喜欢在代码的世界遨游
喜欢在代码的世界遨游
喜欢在代码的世界遨游
喜欢在代码的世界遨游
喜欢在代码的世界遨游
喜欢在代码的世界遨游
喜欢在代码的世界遨游
喜欢在代码的世界遨游
喜欢在代码的世界遨游

代码讲解:

初始化语句为:int i=0;构建了一个变量为i 赋值为0;

条件判断语句为i < 10,当i 小于10时一直循环,当i 大于或等于10时退出循环;

条件控制语句为:i ++,每一次循环后i 都加1;

循环语句体为:printf("喜欢在代码的世界遨游\n"),每次循环都打印这句话;

while循环语句

while循环控制语句由四条基础语句构成:开始条件(初始化语句)、结束条件(条件判断语句)、控制开关(条件控制语句)、执行内容(循环体语句);

while循环语局执行流程:

  1. 执行初始化语句;

  2. 执行条件判断语句;判断结果是否成立(成立:执行循环语句体)(不成立:结束循环)

  3. 执行条件控制语句;

  4. 回到第二步继续执行条件判断语句;

代码示例:

cpp 复制代码
#include <stdio.h>         
int main()
{
	int i=0;
	while(i<10)
	{
		printf("世界你好!我在编程世界努力学习\n");
		i++;
	}
	return 0;
}

//代码运行结果:
世界你好!我在编程世界努力学习
世界你好!我在编程世界努力学习
世界你好!我在编程世界努力学习
世界你好!我在编程世界努力学习
世界你好!我在编程世界努力学习
世界你好!我在编程世界努力学习
世界你好!我在编程世界努力学习
世界你好!我在编程世界努力学习
世界你好!我在编程世界努力学习
世界你好!我在编程世界努力学习

代码讲解:

初始化语句为:int i=0;构建了一个变量为i 赋值为0;

条件判断语句为i < 10,当i 小于10时一直循环,当i 大于或等于10时退出循环;

条件控制语句为:i ++,每一次循环后i 都加1;

循环语句体为:printf(" 世界你好!我在编程世界努力学习\n "),每次循环都打印这句话;

do...while循环语句

do...while循环控制语句由四条基础语句构成:开始条件(初始化语句)、结束条件(条件判断语句)、控制开关(条件控制语句)、执行内容(循环体语句);

do...while循环的执行过程:

  1. 执行初始化语句;

  2. 执行循环体语句;

  3. 执行控制语句;

  4. 执行条件判断语句(成立:回到第二步继续执行循环体语句)(不成立:结束循环)

特点:先执行后判断,循环体至少执行一次;

代码示例:

cpp 复制代码
#include <stdio.h>         
int main()
{
	int i=0;
	do{
		printf("未经审视的人生不值得过。\n");
		i++;
	}while(i<10);
	return 0;
}


//代码运行结果:
未经审视的人生不值得过。
未经审视的人生不值得过。
未经审视的人生不值得过。
未经审视的人生不值得过。
未经审视的人生不值得过。
未经审视的人生不值得过。
未经审视的人生不值得过。
未经审视的人生不值得过。
未经审视的人生不值得过。
未经审视的人生不值得过。

代码讲解:

执行初始化语句为:int i=0;构建了一个变量为i 赋值为0;(只会执行一次!)

执行循环语句体为:printf("未经审视的人生不值得过。\n "),每次循环都打印这句话;

执行执行条件控制语句;

条件判断语句为i < 10,当i 小于10时一直循环,当i 大于或等于10时退出循环;

特点:不管满不满足条件控制语句都会执行一次循环语句体和条件控制语句;

for循环语句和while循环语句的区别

在C语言中,for 循环和 while 循环都是用于重复执行代码块的基本结构,但它们在语法、适用场景和控制方式上有显著区别。

相同点:

1.都是用于重复执行代码块的基本结构;

  1. 执行流程规则都是一样的;

不同点:

for循环次数明确(如固定次数、遍历数组/字符串)。需要紧凑的代码结构(如初始化、更新逻辑简单)。for循环中: 知道循环次数或者循环的范围 例如:累加求和1-100;

while循环次数不确定(如依赖外部条件、用户输入或动态数据)。初始化或更新逻辑复杂,需单独处理。while循环中:不知道循环的次数和范围,只知道循环的结束条件 例如:循环读取文件中的内容;

for循环语句和while循环语句练习题

通过本章的学习,接下来就是进入实战环节,小伙伴们开始攻略C语言for循环语句和while循环语句练习题啦!小伙伴们先尝试自己敲代码在来查看代码示例呦!

for循环语句(对女朋友说的话)

题目:对亲亲女朋友说10遍:我们结拜为兄弟如何?

代码示例:

cpp 复制代码
#include <stdio.h>         
int main()
{
	for(int i=0;i<10;i++)
	{
		printf("亲亲女朋友,我们今日做结拜兄弟如何!我做大哥。\n");
	}
	return 0;
}

代码示例:
亲亲女朋友,我们今日做结拜兄弟如何!我做大哥。
亲亲女朋友,我们今日做结拜兄弟如何!我做大哥。
亲亲女朋友,我们今日做结拜兄弟如何!我做大哥。
亲亲女朋友,我们今日做结拜兄弟如何!我做大哥。
亲亲女朋友,我们今日做结拜兄弟如何!我做大哥。
亲亲女朋友,我们今日做结拜兄弟如何!我做大哥。
亲亲女朋友,我们今日做结拜兄弟如何!我做大哥。
亲亲女朋友,我们今日做结拜兄弟如何!我做大哥。
亲亲女朋友,我们今日做结拜兄弟如何!我做大哥。
亲亲女朋友,我们今日做结拜兄弟如何!我做大哥。

for循环语句(正向/反向输出数字)

题目:在实际开发中,如果要获取一个范围中的每一个数据时,就会用到循环;

要求1:打印1-5

要求2:打印5-1

要求3:求1-5之间的和

代码示例:

cpp 复制代码
ain()
{
	//打印1-5
	for(int i=1;i<=5;i++)
	printf("%d",i);
	printf("\n");
	//打印5-1
	for(int j=5;j>=1;j--)
	printf("%d",j);
	printf("\n");
	//求和1-5之间的和
	int sum=0;
	for(int k=0;k<=5;k++)
	sum+=k;
	printf("1-5之间的和为%d\n",sum);
	return 0;
}

代码运行结果:
12345
54321
1-5之间的和为15

for循环语句(求和)

题目:求1-100之间的偶数和

代码示例:

cpp 复制代码
#include <stdio.h>         
int main()
{
	int sum=0;
	for(int i=0;i<=100;i+=2)
	{
		sum+=i;
	}
	printf("1-100之间的偶数和为:%d\n",sum);
	return 0;
}

//代码运行结果:
1-100之间的偶数和为:2550

for循环语句(统计满足条件的数字)

题目:键盘录入两个数字,表述一个范围,统计这个范围中。既能被6整除,又能被8整除数字有多少个?

代码示例:

cpp 复制代码
#include <stdio.h>         
int main()
{
	int num1,num2;
	printf("键盘录入两个数字,表述一个范围,统计这个范围中。既能被6整除,又能被8整除数字有多少个?\n");
	scanf("%d%d",&num1,&num2);
	if(num1>num2)
	{
		num1=num1^num2;
		num2=num1^num2;
		num1=num2^num1;
	}
	int count=0;
	for(num1;num1<=num2;num1++)
	{
		if((num1%6==0) && (num1%8==0))
		{
			count++;
		}
	}
	printf("既能被6整除,又能被8整除数字有%d个\n",count);
	return 0;
}


//代码运行结果:
键盘录入两个数字,表述一个范围,统计这个范围中。既能被6整除,又能被8整除数字有多少个?
1
1000
既能被6整除,又能被8整除数字有41个

while循环语句(打印折纸的次数)

题目:世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米;请问,我折叠多少次,可以折成珠穆朗玛峰的高度

代码示例:

cpp 复制代码
#include <stdio.h>         
int main()
{
	int conut=0;
	float sum=0.1;
	while(sum<884430)
	{
		sum*=2;
		conut++;
	}
	printf("需要折纸%d次就能达到珠穆朗玛峰的高度\n",conut);
	return 0;
}

//代码运行结果:
需要折纸24次就能达到珠穆朗玛峰的高度

while循环语句(回文数)

题目:判断一个整数是否为回文数;回文数是指正序和倒序读都是一样的整数例如:121是回文数,而123不是;

代码示例:

cpp 复制代码
#include <stdio.h>         
int main()
{
	int num1=0;
	printf("输入数值判断是否为回文数:\n");
	scanf("%d",&num1);
	int num2=num1;
	int temp=0;
	int sum=0;
	while(num2!=0)
	{
		temp=num2%10;
		sum=sum*10+temp;
		num2/=10;
	}
	if(sum == num1)
	{
		printf("%d是回文数\n",num1);
	}
	return 0;
}

//代码运行结果:
输入数值判断是否为回文数:
5445
5445是回文数

while循环(求和)

题目:计算:1*2*3+3*4*5+5*6*7+...+97*98*99(while循环写)

代码示例:

cpp 复制代码
#include <stdio.h>         
int main()
{
	int num1=1,num2=2,num3=3,sum=0;
	int i=1;
	while(i<=97)
	{
		sum+=num1*num2*num3;
		num1++;num2++;num3++;i++;
	}
	printf("1*2*3+3*4*5+5*6*7+...+97*98*99=%d",sum);
	return 0;
}

//代码运行结果:
1*2*3+3*4*5+5*6*7+...+97*98*99=23527350

制作不易!喜欢的小伙伴给个小赞赞!喜欢我的小伙伴点个关注!有不懂的地方和需要的资源随时问我哟!

相关推荐
Chester_19994 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
裕晟资质规划5 小时前
武器装备科研生产单位保密资质申请方法论:条件模型与流程拆解
人工智能·算法
EXI-小洲5 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
会周易的程序员6 小时前
给 PLC 写一个字节码虚拟机:STVM 虚拟机架构设计
开发语言·c++·虚拟机·软plc·iec61131·stvm
机器视觉知识推荐、就业指导6 小时前
为什么老说“纯 Qt 没啥就业市场”?
开发语言·qt
telepan6 小时前
Qt 开发避坑与性能指南:如何优雅、安全地定义全局常量字符串?
开发语言·qt
小灰灰搞电子6 小时前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt
QT界面美化性能优化6 小时前
QT+AI:使用AI技术为QT应用程序赋能
c++·人工智能·qt·opencv·qt教程·qt6.3
m0_695251496 小时前
Qt MaintenanceTool 使用国内镜像加速下载(超详细教程)
开发语言·qt
是隼人6 小时前
buuctf-pwn xdctf2015_pwn200题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门