C语言基础 五、循环
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五、循环结构程序设计
本章概述:
以笔试和上机两种形式考核。笔试中,多出现在选择题第20-23题。填空题第8、9题。分值约占12%。上机中,三种题型中均有体现,抽中几率约为37%。考生要熟练掌握。
大纲要求:
1.for循环结构。
2.while和do-while循环结构。
3.continue语句和break语句。
4.循环的嵌套。
重点难点:
1.for循环结构。
2.continue语句和break语句。
3.循环的嵌套。
考点分析:
while 语句
while 语句一般形式:
while (条件表达式)
{
循环体
}
while 语句执行过程:
先判断条件是否成立,只要条件成立则一直执行循环体语句,直到条件不成立则结束循环,结束while语句。
说明:
(1)while语句的特点是先判断,再执行。因此,若条件表达式的值一开始就为“假”,那么循环体一次也不执行。
(2)当循环体为多个语句组成,必须用{}括起来,形成复合语句。
(3)在循环体中应有使循环趋于结束的语句,以避免“死循环”的发生。
试题解析
1.要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是(A)
A)while((ch=getchar())!=′N′)printf("%c",ch);
B)while(ch=getchar()!=′N′)printf("%c",ch);
C)while(ch=getchar()==′N′)printf("%c",ch);
D)while((ch=getchar())==′N′)printf("%c",ch);
解析:while语句的功能是:计算表达式的值,如为真,则执行循环体语句,执行完毕后,再计算表达式的值,若仍为真,则重复执行循环体语句。直到表达式的值为假时,结束
循环。ch=getchar()应加一个括号,表示输入字符的函数。
2.利用while语句,计算1+1/2+1/4+…+1/50的值,并显示出来。
#include“stdio.h”
main()
{
float sum=1;
int i=2;
while (i<=50)
{
sum +=1/(float) i;
i+=2;
}
printf("sum=%f",sum);
}
运行结果:
sum=2.907979
解析:在此程序中,在循环体中进行累加计算时,必须要对变量i进行强制类型转换,即利用(float)i使其变为浮点型中间变量后再参加运算,否则,由于i中存放的是大于1的整型量,所以,1/i将按整型规则运算,其结果总是为0。
do-while 语句
do
{
循环体
}
while(条件表达式);
do-while语句执行过程:
先执行循环体,之后判断条件,条件为真,则重复执行循环体,再判断条件,直到条件为假为止,该do-while语句结束。
【特别提醒】:
(1)do是C语言的关键字,必须与While联合使用。do-while循环由do开始,用while 结束。注意:在while(表达式)后的“;”不可丢,它表示do-while语句的结束。
(2)do-while总是先执行一次循环体,再求表达式的值,因此,无论表达式的值是真或假,循环体至少要被执行一次。
(3)和while循环一样,在do-while循环体中,一定要有能使while后表达式的值变为0的操作,否则,循环将会无限制的进行下去。
do while、while 语句区别:
(1)do while:先执行,再判断,循环体至少执行一次。
(2)While:先判断,再执行,循环体至少执行0次。
试题解析
1.while和do-while循环的比较
main() main()
{ {
int sum=0,i; int sum=0,i;
scanf("%d",&i); scanf("%d",&i);
while(i<=10) do
{ {
sum=sum+i; sum=sum+i;
i++; i++;
} }while(i<=10);
printf("sum=%d\n",sum); printf("sum=%d\n",sum);
} }
解析:本例左半部分用while循环求i到10的连加和,i的值由用户输入。右半部分用do-while循环实现相同的功能。当输入i的值小于或等于10时,二者得到的结果相同。例如,当输入的i=1时,用while结构和do-while结构得到的结果是都是55;而当输入的i的值大于10时,二者得到的结果就不同了。例如,当输入的i=15时,用while结构得到的结果是0;而用do-while结构得到的结果是15。这是因为此时对while循环来说,一次也不执行循环体,而对do-while循环来说,则要执行一次循环体。由此可以得到结论:当while后面的表达式的第一次的值为“真”时,两种循环得到的结果相同。否则,两者结果
。
for 语句
for(变量初始化表达式;条件表达式;变量变化表达式)
{
循环体
}
// 变量初始化表达式一般用来设置变量的初始值.
//条件表达式是控制循环次数的,只有当条件成立时,循环才进行。
//变量变化表达式控制每次循环后变量的变化。
for 语句执行过程:
(1) 当进入for循环时,首先执行变量初始化表达式,接着就判断条件,如条件不成立,则循环一次也不会执行。
(2) 如条件成立,则执行循环的语句,循环语句可以是单个语句,也可以是复合语句。
(3) 变量变化表达式在循环体语句执行完成后执行,之后回到(2)。
说明:
(1)for语句一般形式中的“变量初始化表达式”可以省略,此时应在for语句之间前给循环变量赋初值。
(2)如果“条件表达式”省略,即不判断循环条件,循环将无终止地进行下去
(3)“变量变化表达式”也可以省略,但此时程序设计者应另外设法保证循环能正常结束。
【特别提醒】:
几种循环的比较
(1)一般来说,do与while循环常用于预先不确定循环次数的循环中,而for循环更适合用于预先确定循环次数的循环中。
//例如计算n个(或指定个数)数的平均成绩、阶乘等。。。
(2)For 语句的循环体至少执行0次,可改写为相应的 while 语句(注意不可改写为