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

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

相关推荐
草莓熊Lotso41 分钟前
【数据结构初阶】--二叉树(二)
c语言·数据结构·经验分享·其他
Villiam_AY2 小时前
Redis 缓存机制详解:原理、问题与最佳实践
开发语言·redis·后端
UQWRJ2 小时前
菜鸟教程R语言一二章阅读笔记
开发语言·笔记·r语言
岁忧4 小时前
macOS配置 GO语言环境
开发语言·macos·golang
朝朝又沐沐5 小时前
算法竞赛阶段二-数据结构(36)数据结构双向链表模拟实现
开发语言·数据结构·c++·算法·链表
魔尔助理顾问5 小时前
系统整理Python的循环语句和常用方法
开发语言·后端·python
Ares-Wang5 小时前
JavaScript》》JS》 Var、Let、Const 大总结
开发语言·前端·javascript
薰衣草23336 小时前
一天两道力扣(6)
算法·leetcode
逝雪Yuki6 小时前
Leetcode——287. 寻找重复数
c++·leetcode·二分查找·双指针·环形链表
剪一朵云爱着6 小时前
力扣946. 验证栈序列
算法·