柏虎资源网

专注编程学习,Python、Java、C++ 教程、案例及资源

更新补发第6天:7天学会C语言,每天5分钟,不需要基础

这是更新补发的第6天的课程,内容是循环语句。

循环语句总共有三种:

  1. for循环
  2. while循环
  3. do-while循环

第5天其实已经讲了一些for循环,今天再复习一下。

一、for循环

三个循环语句中我特别喜欢for循环,因为它很简洁。

我们先来看一个例子:

例1:编程输出100行:你好,C语言!

程序如下:

for循环的语法格式如下:

注意:当循环体只有一条语句时,循环体前后的大括号{ }可以去掉。

所以例1也可以写成:

循环体printf("你好,C语言!\n"); 前面的 { 和后面的 } 去掉了。

再看一个例子:

例2:编程输出从1到100的整数,每行输出1个。

程序如下:

例2也可以写成:

知道{ }的作用嗎?

if (條件) 語句;

if (條件) 語句1;else 語句2;

凡是語法中出現一條語句的地方,想要放多條語句,就用{ }

这段话很简洁描述了大括号的作用,是头条友友ScholarMartin在我的评论区留言的,我原封不动放上来,非常感谢@ScholarMartin。

再次强调:当循环体只有一条语句时,循环体前后的大括号{ }可以去掉。

个人建议保留大括号{ },不要去掉。

例3:编程输入10个整数,求平均值。

注意输出是用printf( )函数,输入是scanf( )函数。

程序如下:

运行时输入10个整数,就可以得到平均值。

注意输入的10个整数,以回车间隔(就是输入一个整数就回车一次),或者以空格隔开(输入的10个整数之间用空格间隔,输入完10个数后回车),都行。

比如我输入1、2、3、4、5、6、7、8、9、10这10个整数,每输入1个数就回车一次,运行结果如下:

如果运行时输入10个整数,还是输入1到10,数字之间以空格隔开,输入完10个数以后回车,得到平均值。运行结果如下:

前面1到10是输入的10个整数,最后得到平均值是5.5。

注意之前说过,%f输出的实数默认保留6位小数,那么我只想保留2位小数怎么办呢?把输出语句中%f改成%.2f,就是%和f之间加上.2注意2前面的小数点不要漏了,表示保留2位小数。

例4:编程输入10个整数,求平均值,要求输出的平均值保留2位小数。

运行时输入10个整数,还是输入1到10,数字之间以空格隔开,输入完10个数以后回车,得到平均值。运行结果如下:

还有一个问题,大家看程序中平均值变量ave的数据类型是float型,不是int型,因为平均值是可能有小数的,所以平均值变量的数据类型不是int,而是float型。

另外,求出总和s以后,除以10得到平均值,程序中不是

ave = s / 10 ;

而是

ave = s / 10.0 ;

因为这个除法运算符/, 它左右两边是整数的话,得出来的结果会自动取整(就是自动去掉小数部分),而它左右两边只要有一个为实数结果才是实数

比如: 55/10的结果是5, 55/10.0的结果是5.5, 55.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:编程求1+2+3+…+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:编程求1+2+3+…+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:下列程序的运行结果是什么?

运行结果是输出1 2 4 5 7 8 10,而3、6、9不能被输出

当满足条件( i%3==0 )时,执行continue; 此时跳过continue;后面的语句printf(“%d ”, i);,执行下次循环,直到循环条件为假,才结束循环,执行后续语句printf(“\n”);

也就是说,当continue被执行时,它后面的语句printf(“%d ”, i);就不能执行了(跳过了),所以3、6、9没有输出。

break语句和continue语句没明白的也不要紧,可以先略过,你只要先懂得for、while和do-while循环就可以了。

另外强调一下,我们知道输入方式有两种状态:

C程序中的符号,只要不是输出信息的(不是在printf()的双引号里面的信息),那么所有的圆括号、尖括号、大括号、逗号、分号、双引号等等所有这些符号,都必须是这个状态下的符号:

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言