这是更新补发的第6天的课程内容是循环语句。循环语句总共有三种for循环while循环do-while循环第5天其实已经讲了一些for循环今天再复习一下。一、for循环三个循环语句中我特别喜欢for循环因为它很简洁。我们先来看一个例子例1编程输出100行你好C语言程序如下for循环的语法格式如下留意在循环的主体仅仅包含一条声明的时候循环主体前后的那种左右大括号{ }能够被去除掉。所以例1也可以写成那个循环体printf(你好C语言\n); 之前的 { 以及之后的 } 被去掉了。再看一个例子例2编程输出从1到100的整数每行输出1个。程序如下例2也可以写成知道{ }的作用嗎if (條件) 語句if (條件) 語句1else 語句2凡是語法中出現一條語句的地方想要放多條語句就用{ }。它是由头条友友ScholarMartin在我的评论区留言的这段话简洁地描述了个大括号的作用经我原封不动地放上来在此非常感谢ScholarMartin。再三作出强调在那种循环体仅仅只有一条语句的情形之下循环体前面以及后面的大括号 能够被去掉。个人建议保留大括号{ }不要去掉。例3编程输入10个整数求平均值。留意输出运用的是printf( )函数输入采用的是scanf( )函数。程序如下运行时输入10个整数就可以得到平均值。紧记输入的10个整数能够以回车间隔也就是输入一个整数便回车一回或者以空格间隔输入的10个整数相互之间用空格间隔输入完10个数之后回车均可。比如说我输入这样十个整数分别是1、2、3、4、5、6、7、8、9、10每一次输入一个数之后就进行一次回车操作其运行结果如下”倘若在运行之际输入十个整数且依旧是输入一至十数字彼此之间以空格予以分隔于输入完十个数之后按下回车键进而获取平均值。运行最终结果如下前面1到10是输入的10个整数最后得到平均值是5.5。注意预先提及过%f输出的实数默认会保留6位小数那么我仅仅只想保留2位小数该如何去做呢将输出语句里的%f改成为%.2f也就是在%与f之间添加上.2留意2前面的小数点千万不要遗漏了这表示保留2位小数。编程序录入10个整数去求取平均值规定输出的平均值要保留2位小数。将10个整数于运行之际来输入到底是输入1至10呢10个数字之间是以空格相互隔开的待把10个数输入完成之后再按下回车键进而获取平均值。呈现的运行结果如下大家来看程序里存在这样一个情况平均值变量ave的数据类型它并非是int型而是float型并且呢还有一个问题那就是平均值是有可能出现小数的所以平均值变量的数据类型才不是int型而是float型。另外求出总和s以后除以10得到平均值程序中不是ave s / 10 ;而是ave s / 10.0 ;鉴于这个除法运算符 / 要是它左右两边均为整数那么所得到的结果会自动进行取整操作也就是自动将小数部分去除然而只有当它左右两边存在一个是实数时其结果才会是实数。如55除以10的所得结果是555除以10.0的所得结果是5.555.0除以10的所得结果同样是5.5。好了我们再来看看while循环。二、wile循环for循环的循环次数是确定的我一看就知道循环要执行10次。鉴于i最初被赋予的值为1只要i是小于或者等于10的情况便需要去执行循环体执行完循环体之后接着执行i也就是让i增加1每一次执行循环的时候i都会增加1一直到增加到大于10的时候才会停止循环这样就能够知道循环的次数是10次。而while循环只看循环条件循环次数不一定是确定的。1、while语法格式注意while括号后面没有分号。当条件为真时重复执行循环体直到条件为假。2、while执行步骤起始之时对条件是不是真进行判别要是为真那就去执行循环体之后再转过头来往回对条件是不是真进行判别将这个流程予以重复一直到条件为假然后去执行后续的语句。留意要是一开头条件便为假那么循环体一回也不开展径直去执行while后续的语句了。3、实践例5编程求123…100的和。运行结果为5050。或许你会觉得此道试题运用起 for 循环来会显得更为简洁的确如此至于选用何种循环语句这完全取决于个人的习惯你能够选用 for 循环当然也能够选用 while 循环。for循环可以改成while循环很简单for循环语法格式改成while循环就是前面讲过通常情况下要是循环次数能够确定那么就使用for循环要是循环次数处于不确定的状态那就使用while循环。例6编程输入若干个整数直到输入0为止求这些整数的和。这道题循环的次数是无法确定的原因在于你并不清楚用户会在输入多少个数之后才会输入0所以我们采用while循环来予以实现。运行时输入100、-2、90、0则得出结果为188。先要在此处输入一个整数n才能够判定n是不是等于0存在一些伙伴有可能会犯下这样的错误就是在while之前未曾输入n在这个时候n不存在值进而就没办法判断它是不是为0所以这样是不正确的。在判断n是否为0之前n必须先有值。所以在之前一定要有这道程序还有一个容易错的地方大家看以下程序有什么问题设有例7其程序功能是输入若干整数一直到输入0才停止去求这些整数的和。那么请问如下程序存在着什么问题呢。看出问题所在了吗这个程序循环体中没有换句话讲程序仅仅进行了一回整数n的输入是在循环尚未启动之际输入的也就是在while之前存在一个scanf。假设最初所输入的整数是10那么该程序呈现为一个死循环因为n始终值等于10它不存在得以改变的途径由于循环体内部不存在重新输入的情况n便没有办法转变为0它始终是10永远无法使条件变为假也就是永远没办法终结循环。三、do-wile循环在程序中while循环与for循环有着相似之处它们都预先对条件进行判断查看其是否为真一旦条件为真便会进入循环持续循环直至循环条件变为假才会结束循环。那么要是从一开始条件便为假那么循环一次都不会被执行。do - whille循环有异于前面那两种循环它会先去执行循环体接着判断条件是不是为真要是循环是真的话就持续执行循环体不然的话就结束循环。1、do-while语法格式注意do后面没有分号while(条件)后面有一个分号。一开始去执行那循环体接着呢去判断相应条件要是条件呈现为真的情况那就再次去执行循环体一直持续到条件变成假的状态为止。2、do-while执行步骤先去执行那循环体接着去判断条件当条件呈现为真的时候重复着去执行循环体不断重复这个过程一直到条件变成假随后再去执行后续语句。所以不管三七二十一循环体至少会执行一次。与for以及while不同for和while要是从一开始条件便是假的话那么循环体是一次都不会被执行的然而do - while循环体起码是会被执行一回的。3、实践例8编程求123…100的和。可以看出while改成do-while也很容易while的语法格式改成do-while语句如下例9对若干整数进行手动编程输入的操作一直持续到输入的整数为0的时候才停止随后去求解这些输入整数的总和。此过程通过使用do - while来予以实现。有如下程序执行时如果输入100、-2、98和0运行结果为196。四、break语句和continue语句1、break语句break的功能中断循环。语法格式break;break的意思就是中断循环或者说跳出循环。例10下列程序的运行结果是什么运行结果只输出1和2在循环体里头一旦满足情况( i对3取余数等于0 )就去执行break; 从而中止循环接着去实行循环后续语句也就是printf(“\n”)。2、continue语句功能是continue语句跳过循环体里在continue之后的语句去执行下一次循环。语法格式continue中断循环是break的意思跳过循环体后面语句执行下一次循环的是continue。我们将例10之中的break替换成continue瞧瞧出现了啥情况例11下列程序的运行结果是什么输出的运行结果呈现出一连串数字分别依次是12457810然而369却并未会被作为结果输出当条件( i对3取余等于0 )得以满足之际执行继续此刻越过继续之后的语句输出整数i对应的数值转而执行下一次循环直至循环条件为假方才终止循环执行后续语句进行换行输出。这意思就是呢当continue被实施的时候它后面跟着进行的语句printf(“%d ”, i)就没办法实施了被越过了所以3、6、9就没有被输出。没明白break语句的不要紧可先略过没明白continue语句的也不要紧同样可先略过只要你先懂得for循环只要你先懂得while循环只要你先懂得do - while循环就可以了。另外强调一下我们知道输入方式有两种状态在C程序里的符号只要它不是用于输出类信息的也就是并非处于printf( )这个函数双引号之中的那些信息那么像所有的圆括号、尖括号、大括号、逗号、分号、双引号等这一系列的符号都必定得是处于这个特定状态之下的符号。