C语言------分支和循环(三)

23 篇文章 2 订阅
订阅专栏

目录

前言

1.for循环 

for循环语法 

for循环中的break与continue和while循环中的作用一样的;

1.break

 2.continue

关于for循环的一些变种 

关于for循环这里有一道曾今的笔试题(看看能否做对):

2.do...while循环 

do..while 循环语法 

 do ...while循环中的break和continue

1.break:

2.continue

一些循环练习:

 goto语句:

关机代码循环实现(goto):


前言

前面两期我们已经介绍了分支( if、switch ) 、while循环以及 gechar/putchar 这两个函数,这一期我们来介绍一下for循环、do..while循环、goto语句以及练习几个栗子!

1.for循环 

for循环语法 

for (初始化; 循环条件; 循环变量的迭代)

{

        循环语句;

}

注意的是:这里for里的每一个表达式都是用 ; 号隔开的! 

OK,举个栗子(打印1---10):

#include<stdio.h>
int main()
{
	int i = 0;

	for (i = 1; i <= 10; i++)
	{
		printf("%d\t", i);
	}

	return 0;
}

运行结果以及代码解释:

 这里我们会发现,在for循环中也有初始化、条件判断、调整三步;那么他和while循环有什么区别呢?我们来对比一下:

 我们可以发现,他们由于风格原因导致形式大大不同,while循环三个部分偏离的较远,有时候让人看不清楚调整这一步!而for循环就不同了,它的三步在同一行,让人一眼就能看清楚!因此在很多时候for循环更胜一筹!

break和continue在for循环中的使用

for循环中的break与continue和while循环中的作用一样的;

让我们来看几个代码:

1.break
#include<stdio.h>

int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
		{
			break;
		}
		printf("%d\t", i);
	}
	return 0;
}

运行结果:

 2.continue
#include<stdio.h>

int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
		{
			continue;
		}
		printf("%d\t", i);
	}
	return 0;
}

运行结果:

关于for循环的一些变种 

1.思考线面代码会打印多少个hehe?

#include<stdio.h>

int main()
{
	for (; ;)
	{
		printf("hehe\n");
	}

	return 0;
}

运行结果以及解释:

 注意:for循环中初始化、条件判断、调整这三步都是能省略的,但建议一般不要省略!否则可能会带来不必要的麻烦!

请看下面的两段代码,思考能打印多少个hehe?

#include<stdio.h>

int main()
{
	int i = 0;
	int j = 0;
	int c = 1;
	for (i = 0; i < 10; i++)
	{
		for (j = 0; j < 10; j++)
		{
			printf("%d hehe\n",c);
			c++;
		}
	}
	return 0;
}

运行结果:

 请继续看下面的两段代码,思考能打印多少个hehe?

#include<stdio.h>

int main()
{
	int i = 0;
	int j = 0;
	int c = 1;//计数器
	for (; i < 10; i++)
	{
		for (; j < 10; j++)
		{
			printf("%d hehe\n",c);
			c++;
		}
	}
	return 0;
}

运行结果以及代码解释:

注意:上面两段代码就差一个初始化,打印的结果却很不同!所以还是建议一般不要轻易的省略这三步(初始化、条件判断、调整)。

ok,再来看一个for循环的特殊情况:

#include<stdio.h>

int main()
{
	int x, y;
	for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)
	{
		printf("hehe\n");
	}
	return 0;
}

 运行结果以及代码演示:

关于for循环这里有一道曾今的笔试题(看看能否做对):

#include<stdio.h>

int main()
{
	int i = 0;
	int k = 0;
	for (i = 0, k = 0; k = 0; i++, k++)
	{
		k++;
	}
	return 0;
}

请问上述代码循环了几次?

答案是 0 次,因为在条件判断的时候是 k= 0 这里注意是直接赋值为0,所以一开始 就是假的(C语言中0 表示真,非0表示假),所以循环压根就没进去!

2.do...while循环 

do..while 循环语法 

do{

        循环语句;xu

} while(循环判断表达式);

注意:do ...while循环的特点是无论什么场景都先执行一次即:先执行再判断! 

OK,举个例子(打印1--10):

#include<stdio.h>

int main()
{
	int i = 1;
	do {
		printf("%d\t", i);
		i++;
	} while (i <= 10);
	return 0;
}

运行结果和代码解释:

 do ...while循环中的break和continue

1.break:
#include<stdio.h>

int main()
{
	int i = 1;
	do {
		if (i == 5)
		{
			break;
		}
		printf("%d\t", i);
		i++;
	} while (i <= 10);
	return 0;
}

代码运行结果:

2.continue
#include<stdio.h>

int main()
{
	int i = 1;
	do {
		if (i == 5)
		{
			continue;
		}
		printf("%d\t", i);
		i++;
	} while (i <= 10);
	return 0;
}

 运行结果和代码解释:

一些循环练习:

1.计算n的阶乘 

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

运行结果:

 2.计算1!+2!+...+n! 

int main()
{
	int n = 0;
	int ret = 1;
	int i = 0;
	int sum = 0;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		ret = 1;
		for (int j = 1; j <= i; j++)
		{
			ret *= j;
		}
		sum += ret;
	}
	printf("%d ", sum);
	return 0;
}

运行结果及代码解释:

 上面这种方法如果不注意ret = 1的话就会错!下面这种方法也可以:

3.在一个有序的数组中查找具体的某个数(二分查找) 

int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int k = 0;
	scanf("%d", &k);
	int left = 0;
	int mid = 0;
	int right = sizeof(arr) / sizeof(arr[0]);
	while (left <= right)
	{
		mid = (left + right) / 2;
		if (k > arr[mid])
		{
			left = mid + 1;
		}
		else if (k < arr[mid])
		{
			right = mid - 1;
		}
		else
		{
			break;
		}

	}
	if (left <= right)
	{
		printf("找到了,下标是 %d ", mid);
	}
	else
	{
		printf("没找到!\n");
	}
	return 0;
}

代码解释和运行结果:

 goto语句:

C语言中提供了可以随意跳跃的goto语句和标记跳转的记号;从理论上讲goto语句是没有必要的,能用goto的一定能用循环实现的!但在某种场合下goto 还是有他自身优势的!例如多重循环结束的时候如果用break要多个但是用goto的话就一次能结束!

 关于goto栗子(关机代码goto实现):

int main()
{
	char arr[20] = { 0 };
	system("shutdown -s -t 60");
	flag:
	printf("您的电脑讲在1分钟后关机,如果输入:我是猪则取消关机");
	scanf("%s", arr);
	if (0 == strcmp(arr, "我是猪"))
	{
		system("shutdown -a");
	}
	else
	{
		goto flag;
	}
	return 0;
}
关机代码循环实现(goto):
int main()
{
	char arr[20] = { 0 };
	system("shutdown -s -t 60");
	while (1)
	{
		printf("您的电脑讲在1分钟后关机,如果输入:我是猪则取消关机");
		scanf("%s", arr);
		if (0 == strcmp(arr, "我是猪"))
		{
			system("shutdown -a");
			break;
		}
	}
	return 0;
}

ok!好兄弟,下期再见!

c语言-分支循环(作业)
07-02
反反复复复复返返
学习-学习文档-c语言-C期末考试样卷A卷.docx
11-21
6. **循环与控制流**:`for`循环内的`break`和`continue`语句,它们用于控制循环的执行流程,考生需理解何时跳出循环以及跳过当前循环迭代。 7. **字符串处理函数`strlen`**:`strlen(s)`计算字符串`s`的长度,但不...
C语言---分支循环
SouTY_C的博客
12-03 1074
文章共介绍了以下内容 分支语句(if语句),多重分支语句(if-else if-else语句),选择语句(switch语句),循环语句,关系操作符,逻辑操作符,条件操作符,break和continue语句,循环的嵌套,goto语句,生成随机数
C语言-分支循环语句3
m0_69533623的博客
09-10 1086
注:goto语句如果使用的不当,就会导致在函数内部随意跳转,打乱程序的执行流程,所以建议能不用就不用,但是如果在循环中,想要快速跳出多个循环的代码,goto语句就非常的方便。0=0,则继续循环,执行循环语句;在执行循环的过程中,如果某些状态发生的时候,需要提前终止循环,这是非常常见的现象,C语言提供了break和continue两个关键字,就是应用到循环中的。do while循环则是先直接进入循环体,执行循环语句,然后再执行while后的判断表达式,表达式为真,就会进行下一次,表达式为假,则不再继续循环
c语言----循环
qq_51530041的博客
10-15 704
c语言作为结构化的程序设计语言有着两个重要的结构---------《循环》《分支》本文我将会对这循环进行介绍。
c语言----分支循环
2302_81216114的博客
12-07 944
大于:> 大于等于:>= 等于:==同一个switch中,每个case后面的常量表达式的值一定不能相等,而多条语句中可以包含多条语句,不需要括号括起来。if-else语句 输入一个整数,如果是正数,在判断是奇数还是偶数。而"i++"是自增后赋值的意思,就是先使用i当前的值,再将i赋值加1;的执行流程是判断是否真和假,if后面的表达式可以是整型,字符型,枚举型,逻辑运算符:&&(并且),||(或者)
c语言---分支循环
qq_45473449的博客
04-18 189
3.转向语句:break语句,goto语句,continue语句,return语句。2.循环执行语句:do while语句,while语句,for语句;1.条件判断语句也叫分支语句;if语句,switch语句;
初识C语言-分支循环
2301_76794365的博客
12-13 1643
else语句是if语句的转折,类似于中文的不是...就是...的语句,if...else...语句可以让我们完整的实现选择结构的功能,如果条件成立执行if语句;c语言是一种结构化的程序设计语言,这里所谓的结构指的是顺序结构,选择结构和循环结构。嵌套语句是在本语句的基础上继续使用if else 进行下一次的选择判断,能将完成更多逻辑复杂的判断。break代表结束本次代码的执行,在switch中break的使用让分支运行完毕不会继续执行代码,导致输出无效内容,让代码的可读性提高了。
C语言入门 --- 分支循环
2301_79842589的博客
01-29 1918
循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构,可以看成是一个条件判断语句和一个向回转向语句的组合。循环结构由个要素组成,分别为循环变量、循环体和循环终止条件。循环结构:也称为重复结构,程序中反复执行的一组指令或程序段循环体:被反复执行的程序段循环变量:用来控制循环是否继续进行的变量常见的循环结构有种,为for循环while循环,以及do while循环。那么,我们作为编程小白该如何正确且有效的使用这种语句?目录介绍① while循环的介绍及使用② for循环的介绍及使用。
c语言--分支循环
weixin_52671417的博客
01-28 629
分支语句和循环语句 c语言是一门结构化的程序设计语言 1.顺序结构 2.选择结构 3.循环结构 什么是语句?? c语言中由一个分号;隔开就是一条语句 eg: int a=10; 语句的结束标志就是; 如果只打印一个 ; 这也是一条语句,只不过它叫空语句 分支语句(选择结构) if语句 这种语句比较简单 if的嵌套 结论:else离它更近的if匹配 #include<stdio.h> int main() { int a = 0; int b = 2; if (a == 1) i
C语言--分支循环语句
2302_80868583的博客
04-11 1030
if语句,switch语句,do while语句,while语句,for语句,continue和break的区别
C语言 -- 分支语句与循环语句
MonologueYY的博客
11-10 1297
选择语句······ 循环语句
完整word版-C语言-基本选择题及参考答案.doc
11-24
7. **C语言的结构**:C语言种基本结构包括顺序结构(按照顺序执行)、选择结构(根据条件执行不同分支)和循环结构(重复执行一段代码直到满足特定条件)。所有C程序都是由这些基本结构组成。 8. **源代码文件...
C语言--控制语句笔记
03-20
其基本形式有种:简化形式、阶梯形式和嵌套形式。简化形式是`if(表达式) 语句块`,阶梯形式是`if(表达式) 语句块1 else 语句块2`,而嵌套形式则是在一个if-else内部再包含另一个if-else。注意,当语句块包含多条...
基于UDP的可靠传输-C语言-XUST.zip
06-15
通过这些控制结构,可以实现程序的分支循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并...
c++STL——map与set的使用及介绍
qq_58761784的博客
10-16 1022
在上一期博客中,我们介绍了二叉搜索树的结构及使用,也了解到了二叉搜索树的结构虽然在大部分情况下搜索的速度非常快,但是它的时间复杂度最终还是由数据的插入顺序决定,所以我们要学习另一种结构——平衡二叉树,平衡二叉树的本质还是二叉搜索树,但是它解决了二叉搜索树时间复杂度由插入顺序决定的问题,所以它的时间复杂度达到了log(N),对于这样一种高效的数据结构是不是得掌握它呢。我们来看文档中关于set的介绍:翻译:1. set是按照一定次序存储元素的容器。
C++刷题】力扣-#121-买卖股票的最佳时机
会写代码的饭桶
10-16 649
给定一个数组 prices,其中 prices[i] 表示第 i 天的股票价格。假设你可以在第 i 天买入并在第 j 天卖出股票(i ≤ j),设计一个算法来计算你所能获取的最大利润。注意你只能持有一股股票,并且你不能同时参与多笔交易(即在再次买入前必须卖出股票)。
【C】数组(array)
最新发布
2402_87467998的博客
10-19 1174
数组(array)
C++刷题】力扣-#118-杨辉
会写代码的饭桶
10-16 373
给定一个非负整数 numRows,生成杨辉角的前 numRows 行。在杨辉角中,每个数是它正上方两个数的和。
C语言概述与历史-谭浩强第版讲义
这篇PPT课件是基于谭浩强的《C程序设计》第版,涵盖了C语言的基础知识和核心概念。课程内容详细丰富,旨在帮助学习者掌握C语言编程的基础技能。 首先,C语言概述部分介绍了C语言的起源和发展历程。在C语言诞生...
写文章

热门文章

  • C语言指针进阶 2420
  • shell运行原理 1968
  • C++初识类和对象 1662
  • C++类和对象(中) 1544
  • Linux环境开发工具之vim 1385

分类专栏

  • C++进阶 15篇
  • Linux从入门到进阶 30篇
  • 问题排查 1篇
  • DS进阶 4篇
  • 算法学习 1篇
  • C++初阶之路 14篇
  • DS初阶 10篇
  • C语言从入门到进阶 23篇

最新评论

  • C++11 线程库

    你的小10: 大佬,互关!

  • C++11 线程库

    战斧: 内容很具体,结构条理也挺清晰,读了以后感觉学到了不少,谢谢博主大佬了

  • Linux 读写者问题和读写者锁

    战斧: 内容很具体,结构条理也挺清晰,读了以后感觉学到了不少,谢谢博主大佬了

  • Linux初识线程

    普通网友: 优质好文,博主的文章细节很到位,兼顾实用性和可操作性,期待博主持续带来更多好文【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • ubuntu22.04不生成core文件

    战斧: 看了很久,发现写的真的很好 很难得的一篇博客 相信再过一段时间回看会有更新的理解

大家在看

  • Verilog:参数(parameter)的使用
  • ESP8266学习记录 340
  • 1:arm汇编语言1:基本介绍与基本指令的介绍
  • 大语言模型学习第八讲之大语言模型评估(8.4&8.5)
  • 计算机毕设-基于springboot的汽车租赁系统|汽车出租管理平台的设计与实现(附源码、lw、ppt)

最新文章

  • C++11 线程库
  • Linux 读写者问题和读写者锁
  • Linux 手撕线程池
2024
10月 5篇
09月 8篇
08月 7篇
07月 8篇
06月 4篇
05月 5篇
04月 8篇
03月 7篇
02月 3篇
2023年39篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家东莞生产玻璃钢座椅雕塑万宁玻璃钢花盆雕塑公司信阳抽象校园玻璃钢雕塑公司阳江玻璃钢动物雕塑厂家现货欧式人物玻璃钢雕塑厂家美陈玻璃钢动物雕塑现货小品玻璃钢卡通雕塑现货宣城步行街玻璃钢雕塑批发延庆玻璃钢花盆花器四川省玻璃钢花盆东莞玻璃钢卡通雕塑安徽玻璃钢圆球雕塑翻模广东佛像玻璃钢雕塑优势香港做美陈最好的商场芒市玻璃钢雕塑设计定做开业商场美陈供应韶关玻璃钢景观雕塑厂家天津玻璃钢雕塑园深圳装饰商场美陈采购山西学校玻璃钢雕塑生产厂家玻璃钢人物雕塑公司定制无锡玻璃钢蝴蝶雕塑绍兴商场美陈厂家直销温州玻璃钢雕塑多少钱一平米玻璃钢雕塑材料制作有哪些陕西玻璃钢浮雕大型不锈钢雕塑江西园林景观玻璃钢雕塑好的玻璃钢雕塑造型定制玻璃钢卡通雕塑价格表商场dp点美陈香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化