C语言基础 五、循环
- 格式:doc
- 大小:166.00 KB
- 文档页数:24
C语⾔学习笔记(7)基础篇--for循环跳出,嵌套,goto语句forbreak:跳出结束当前的循环 i=1时进⼊循环,判断条件成⽴,进⼊if语句,if条件为假略过所控制语句,进⼊输出语句,输出1,。
i⾃增为2后判断条件,成⽴进⼊if语句,if为假略过所控制语句,进⼊输出语句,输出2.i⾃增为3后判断条件,成⽴进⼊if语句,if条件为假略过所控制语句,进⼊输出语句,输出3.i⾃增后为4判断条件,为真进⼊if语句,此时if语句为真,进⼊if所控制的语句,执⾏break语句跳出循环,输出总结果为123 continue:结束这⼀次循环,继续下⼀次循环,continue控制循环体内的它下⾯的语句,continue运⾏时,下⾯的语句不执⾏。
这两个例⼦⼀样,这⾥只是把break换成了continue,前⾯不过多叙述,当i⾃增后为4时判断循环条件,成⽴进⼊if语句,为真执⾏continue语句,这⾥continue控制它下⾯的所有语句,不做输出。
i⾃增为5进⼊判断循环条件... 结果为1235678910 记不住的话就亲⾃测试⼀下 执⾏完⼀次循环后让它随着打印⼀次here,看看是不是continue控制下⾯剩余所有语句 可以看到没有输出4和here语句。
eg1:输出100以内的奇数(包括100)嵌套 for嵌套:⼀个for循环体内⼜包含另⼀个完整的for循环结构,称为for循环的嵌套。
内嵌的循环中还可以嵌套循环,这样就形成了多层循环eg2:打印3x3的*符号理解⼀个考试难度题 ⾸先程序⾛到第⼀个for循环,i=0时进⼊x++语句,执⾏后x为1。
进⼊第⼆个for循环语句,j=0时进⼊if语句,0%2=0,为假,注意,这⾥为假则不执⾏continue语句,别弄混,进⼊if下⾯的x++,x为2。
此时程序还是回到第⼆个for循环开始的地⽅,因为第⼆个for循环的j++后对于循环条件(j<3)来说是成⽴的,所以下⼀次执⾏的是if语句,发现此时j等于1的时候1%2等于1,为真,执⾏continue语句,下⾯的x++不执⾏,j再⾃增为2,循环条件成⽴,进⼊if语句,2%2=0,为假,不执⾏continue语句,往下执⾏x++,x为3。
第5章循环结构程序设计5.1基本知识点✍while语句的使用格式和注意事项✍do-while语句的使用格式和注意事项✍for语句的使用格式和注意事项✍break和continue语句在循环语句中的应用✍循环结构的嵌套✍使用goto语句实现循环结构✍穷举法程序设计方法✍迭代程序设计方法5.2练习题51.单项选择题(1)语句while(!e);中的条件!e等价于A。
A.e==0B.e!=1C.e!=0D.~e(2)下面有关for循环的正确描述是D。
A.for循环只能用于循环次数已经确定的情况B.for循环是先执行循环体语句,后判定表达式C.在for循环中,不能用break语句跳出循环体D.for循环体语句中,可以包含多条语句,但要用花括号括起来(3)C语言中D。
A.不能使用do-while语句构成的循环B.do-while语句构成的循环必须用break语句才能退出C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环(4)C语言中while和do-while循环的主要区别是A。
A.do-while的循环体至少无条件执行一次B.while的循环控制条件比do-while的循环控制条件严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句(5)以下程序段C。
intx=-1;do{x=x*x;}while(!x);A.是死循环B.循环执行二次C.循环执行一次D.有语法错误(6)下列语句段中不是死循环的是__C__。
A.i=100;while(1){i=i%100+1;if(i==20)break;}B.for(i=1;;i++)sum=sum+1;C.k=0;do{++k;}while(k<=0);D.s=3379;while(s++%2+3%2)s++;(7)与以下程序段等价的是__A__。
c中while语句的用法在计算机编程语言中,循环是一种常用的结构,它允许程序执行一系列代码多次。
C语言中的while循环就是其中一种。
在本文中,我们将详细介绍C语言中while循环语句的用法,包括循环类型、循环条件、循环语句、循环控制等方面的知识。
一、循环类型C语言中有三种循环类型:while、for和do-while。
其中while循环最常用。
while循环的语法格式如下:while (expression) { statement(s); }解释:expression是要测试的条件。
当条件为真时,循环执行语句。
当条件为假时,循环终止。
statement是要执行的语句。
可以是一条或多条语句。
{}是可选的,如果没有,只有下一条语句是循环语句。
二、循环条件循环条件是while循环的最重要部分。
它用于控制循环的执行次数。
循环条件可以是任何表达式。
C语言中,下列条件为假:· 0· False· NULL· 空字符串其他的表达式都被视为真。
循环条件可以使用比较运算符、逻辑运算符和位运算符。
下面是一些常见的比较和逻辑运算符:比较运算符:· == 等于· != 不等于· > 大于· >= 大于等于· < 小于· <= 小于等于逻辑运算符:· && 逻辑与· || 逻辑或· ! 逻辑非三、循环语句循环语句是while循环中要执行的语句。
这些语句可以是一条或多条语句。
只要循环条件为真,循环语句将一遍又一遍地执行。
我们来看一个例子:#include <stdio.h>int main() { int i = 0;while (i < 5) { printf("Hello, world!\n"); i++; }return 0; }输出结果:Hello, world! Hello, world! Hello, world! Hello, world! Hello, world!在上面的例子中,我们使用while循环语句输出了五次“Hello, world!”。
C语言程序设计课件教案第五章循环结构教学目的掌握循环结构中的while语句、dowhile语句、for语句的用法,掌握中断语句中break和continue语句的用法。
教学要求1.熟练掌握while语句、dowhile语句、for语句2.熟练掌握break语句、continue语句重点和难点1.while语句、dowhile语句、for语句的使用2.break语句、continue语句的使用教学支撑环境与教学资源:1.笔记本电脑2.VC20103.投影仪教学方法讲授法、练习法、讨论法授课课时6课时教学过程AM一、课程引入计算1+2+3+...+n有几种方法,需要多少步骤?、循环结构语句什么时候用到循环结构:处理重复的问题的时候。
循环结构的三大语句:while语句、dowhile语句、for语句。
1.while语句while(循环条件表达式)循环体语句;执行过程:只有循环条件表达式的值为真就执行循环体语句,先判断后执行。
1.输出1---n之间的数intmain(void){inti=1;intn=0;printf("请输入n的值:");scanf("%d",&n);//1015while(i<=n)15printf("%d\n",i);i++;}return0;}2.计算m+...+n 的值intmain(void){inti=1;intn=0;intm=0;intsum=0;printf("请依次输入m 和n 的值:");scanf("%d%d",&m,&n);//m+...n10while(m<=n){sum=sum+m ;m++;}printf("sum=%d\n",sum);return0;}2.do...while 语句do循环体语句;}while(循环条件表达式);执行过程:先执行循环体语句,再检查循环条件表达式的值是否为真,如果为真则继续执行循环体语句,否则结束循环。
五、循环结构程序设计本章概述:以笔试和上机两种形式考核。
笔试中,多出现在选择题第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 语句(注意不可改写为do while 语句)试题解析1.For语句可以省略其他表达式,只给循环条件。
如:for( ;i<=10;) while(i<=10){ {fac=fac*i; 相当于: fac=fac*i;i++; i++;} }解析:在这种情况下,完全等同于while语句。
可见for语句比while语句功能强,除了可以给出循环条件外,还可以赋初值,使循环变量自动增值等。
2.以下程序的输出结果是【11】。
main(){ int s,i;for(s=0,i=1;i<3;i++,s+=i);printf("%d\n",s);}解析:此程序中,for循环语句后面直接跟了一个“;”,表明循环体为空。
输出语句不在for循环体内,所以在循环执行完毕后才输出s的值。
s、i的初值分别为0和1,判断循环条件,表达式“1<3”成立,执行“i++,s+=i”后,i和s的值分别为2和1,继续判断循环条件,表达式“2<3”成立,执行“i++,s+=i”后,i和s的值分别为3,再次判断循环条件,表达式“3<3”不成立,循环结束。
3.用for循环计算1~100的累加和。
void main(){int i, sum = 0; // i是循环控制变量,sum保存累加和for (i = 1; i <= 100; i++)sum = sum + i;printf("1~100的累加和为:%d" ,sum);}解析:for循环连同循环体构成一个作用域,for循环内定义的变量仅仅在for循环内具有可见性。
上例也可写成如下形式:void main(){int i, sum = 0; // i是循环控制变量,sum保存累加和for (i = 1; i <= 100; i++)sum = sum + i;printf("1~100的累加和为:%d\n" ,sum);printf("%d\n" ,i); //在for语句外i不可见}上例中把声明循环控制变量i的语句放在for循环内,这样i在循环外不可见。
如果删除最后一行的注释符,将产生无法解析变量i的错误。
循环的嵌套这就是循环的嵌套。
三种循环(while循环、do-while循环和for循环)可以相互嵌套。
【特别提醒】:循环嵌套的层数并没有限制,但层数过多会使可读性变差,一般嵌套层数不宜超过3层。
试题解析1.用for循环与while循环求100以内的所有素数。
素数是除了1和自身外,不能被其它数整除的数。
本程序使用外层循环控制变量从2~100变化,内层循环则检验外层循环控制变量是否为素数。
void main( ){for (int i = 2; i <= 100; i++){boolean sushu = true; // 假设i为素数int j = 2;// 如果2~i/2之间有能够整数i的数,i就不是素数while ((j <= i / 2) && sushu) {if (i % j == 0)sushu = false;j++;}//如果sushu的值保持为true, 说明i%j==0一直不成立,因此,i是素数if (sushu) printf(“%d\n”,i);}}程序的运行后的输出为:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97解析:循环语句的循环体也可以是循环,这样就构成了多重循环。
多重循环既可以是语句自身的循环,也可以是这些语句的复合。
break、continue语句break ;break语句作用:终止对switch语句或循环语句的执行,即跳出这两种语句,而转入这两种语句的下一语句执行。
说明:(1)break语句只能用于循环语句或switch语句中。
(2)在循环语句嵌套使用的情况下,break语句只能跳出(或终止)它所在层的循环,而不能同时跳出(或终止)多层循环,如:for(…){for(…){…break;}}上述的break语句只能从内层的for循环体中跳到外层的for循环体中,而不能同时跳出两层循环体。
continue语句一般形式:continue;continue语句作用:再循环语句内,结束本次循环,即跳过本层循环体中余下尚未执行的语句,接着再一次进行本层循环的条件判定。