版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第六章循环结构程序设计学号姓名班级成绩 A B C学习目的与要求:1、领会程序设计中构成循环的三要素;2、掌握for、while、do-while 语句的用法;3、了解break、continue在循环语句中的作用;重点:for、while、do-while 语句的用法;第1讲知识归纳:1、while 语句:while (条件)语句/如果不加花括弧,while语句的范围只有一个语句;(1)循环三要素:循环变量初值、循环条件、循环趋于结束语句;(2)在循环体中应有使循环趋向于结束的语句;2、dowhile 语句:do语句/如果不加花括弧,dowhile 语句的范围只有一个语句; while (条
2、件)。(1)循环三要素:循环变量初值、循环条件、循环趋于结束语句;注意:dowhile循环与while循环的区别;基础练习(A)一、选择题1、C语言中while和do-while循环的主要区别是()。A)do-while的循环体至少无条件执行一次B)while的循环控制条件比 do-while的循环控制条件严格C)C)do-while允许从外部转到循环体内D)do-while的循环体不能是复合语句2、以下描述中正确的是()。A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句B)B)do-while循环由do开始,用while结束,在while (表达式)
3、后面不能写分号C)在do-while循环体中,一定要有能使while后面表达式的值变为零(假”)的操作C) C)do-while循环中,根据情况可以省略 while3、设有程序段int k=10 。while(k) k=k-1 。则下面描述中正确的是()。A) while循环执行10次B)循环是无限循环C)循环体语句一次也不执行D)循环体语句执行一次4、下列循环语句中有语法错误的是()。A) while(x=y) 5 ; B) while(0) ;C) do 2 ; while(x=b) ; D) do x+ while(x=10) ;5、已知 int i=1 ;执行语句 while (i+4
4、) ;后,变量 i 的值为()。 A) 3 B) 4 C) 5 D) 66、语句 while(!E) 。中的表达式 A)E=07、下面程序段的运行结果是( a=1 。 b=2 。 c=2 。 while(abc) !E 等价于(B)E!=1 )。t=a 。 a=b 。b=t。c- 。C)E!=0D)E=1printf( “ d,%d,%d ,a,b。)A)1,2,0B)2,1,08、下面程序的运行结果是( #include main() )。C)1,2,1D)2,1,1int num=0 。 while(num=2) A)9、以下能正确计算A )s=s*i 。num+ printf(n%”d
5、,num。)B)12C)D)1 X 2 X 3 X X 10doi=1 。 s=1 。 s=s*i 。的程序段是()。B)doi=1 。s=0 。i+ 。while(i=10) 。 C)i=1。 s=1 。i+ 。while(i=10) 。D)i=1 。s=0 。D)0dos=s*i 。i+ 。 while(i=10)。dos=s*i 。 i+ 。while(i=10)。10 、下面程序的运行结果是( )。#includemain()int y=10 。do y- 。 while(-y) 。 printf(“n%”d ,-y-) 。A) -1B )1C) 811 、已知 int i=1,j=0
6、 ;执行下面语句后 j 的值是()。while(i)switch(i) case 1: i+=1 ; j+ ; b reak ; case 2: i+=2 ;j+;break ; case 3: i+=3 ;j+;break ; default: i- ;j+;break ;A) 1 B) 2 C) 3 D) 死循环12、若运行以下程序时,从键盘输入 2473,则下面程序的运行结果是 ( )。#include main()int c 。while(c=getchar()!= n ) switch(c- 2) case 0: case 1: putchar(c+4) 。 case 2: putc
7、har(c+4) 。 break 。 case 3: putchar(c+3) 。default: putchar(c+2) 。 break 。 printf( n“”。)A)668977 6688766 二、填空题B)668966C ) 66778777D)1、执行下面程序段后, k 值是。k=1 。 n=263 。do k*=n%10 。 n/=10 。 while(n) 。2、下面程序的运行结果是。#includemain()int a,s,n,count 。a=2。 s=0。 n=1 。 count=1 。while(count=7) n=n*a 。 s=s+n 。 +count 。
8、printf( “ s=%sd)”。,3、下面程序段的运行结果是。x=2 。 代表回车),则下面程序的运行do printf( *X-)。while(!x=O)。4、当运行以下程序时,从键盘键入China#5士甲.日结果是。#include main()int v1=0,v2=0 。 char ch 。 while(ch=getchar()!=#。switch(ch)case a:case h: default: v1+ 。case o : v2+printf(“ %d,%n”d ,v1,v2)。三、编程:1、编程求 1*3*5*7*9 的值2、编写程序计算下列算式的值:1111C 二:1+
9、+ + + (xl)直到某一项A=0.000001时为止。输出最后C的值。3、从键盘输入的字符中统计数字字符的个数,用换行符结束循环。能力提高(B)一、选择填空题1、下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数 个数n,并输出m、n中的较大者,请选择填空。#in cludemain ()int m=O,n=O 。char c。while()!= n)if(c= A &c= a &c= z )n+。printf(“ ”,mn?。(1) A ) c=getchar() B ) getchar()C) scanf( “ C ,c)(2) A ) n:mB) m:nC) m:m2、 下
10、面程序的功能是在输入的一批正整数中求出最大者,输入0空。#in cludemai n()int a,max=0 。scanf( “ %cf ,&a)while()if(maxa) max=a 。scanf( “ %d ,&a)printf( “ %d ,max)A) a=0B) aC) !a=1D) !a3、 下面程序的功能是计算正整数2345的各位数字平方和,请选择填空#in cludemain ()int n,sum=0 。n=2345 。dosum=sum+ 。n=。m和小写字母的D) n:n结束循环,请选择填while(n)。(1) A ) n %10printf(“ sum=%d ,
11、sum)B) (n%10)*(n%10)C) n/10D) (n/10)*(n/10)A)n/1000B) n/100C) n/10D)n %10二、读懂程序,并按照程序的功能将程序补充完整1、下面程序的功能是用“辗转想除法”求两个正整数的最大公约数。请填空。#in cludemain ()int r,m,n。scanf( “ %d %d,&m,&n。if(mn)。r=m%n 。while(r) m=n 。 n=r。 r=。 printf(“ %d , n)2、 下面程序的功能是用do-while语句求1至1000之间满足“用 3除余2 ;用5除余3 ; 用7除余2”的数,且一行只打印五个数。
12、请填空。#in cludemain ()int i=1,j=0 。doif()printf(“ %4d ,i)j=j+1。if() printf( n”)i=i+1 。while(i1000)。3、 等差数列的第一项a=2,公差d=3,下面程序的功能是在前n项和中,输出能被 4整除的所有的和。请填空。#in cludemain ()int a,d,sum 。a=2。 d=3。 sum=0 。dosum+=a 。;if() printf( “ oh” ,sum)while(sum200)。三、编程:1、从键盘输入任意的字符,按下列规则进行分类计数。第一类0, 1 ,2 , 3 , 4, 5, 6
13、, 7 ,8 , 9第二类+, -, *, /, %,=第三类其它字符当输入字符时先计数,然后停止接收输入,打印计数的结果。2、求解爱因斯坦数学题。有一条长阶梯,若每步跨 2 阶,则最后剩余 1 阶,若每步跨 3 阶,则最后剩 2 阶,若每步跨 5 阶,则最后剩 4 阶,若每步跨 6 阶则最后剩 5 阶,若每步 跨 7 阶,最后才正好一阶不剩。请问,这条阶梯共有多少阶 ? 分析:据题意,阶梯数满足下面一组同余式:x mod 2=1x mod 3=2x mod 5=4x mod 6=5x mod 7=03、从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束 输入。第2讲
14、知识归纳 :1、for 语句:for 循环的一般形式 : for ( 表达式 1。 表达式 2 。 表达式 3 ) 语句 (1) for 语句中三个表达式,对应循环中的三要素;表达式 1 循环变量的初值;表达式 2 循环的条件;表达式 3 循环趋于结束语句;(2) for 语句中的三个表达式,可以变换位置 ,但功能不变; 如: 表达式 1。for ( 。 表达式 2 。 表达式 3 ) 语句 for ( 表达式 1 。 表达式 2 。 ) 表达式 3 ; 语句 for ( 表达式 1 。 。 表达式 3 ) if ! ( 表达式 2) break 。 语句 表达式 1 。 for ( 。 表达
15、式 2 。 ) 表达式 3 ; 语句 2、循环的嵌套(1) 三种循环可以互相嵌套;3、break 和 continue(1) break 语句作用:强行终止循环,转到循环体下面语句去执行;(2) continue 语句作用:结束本次循环,再去判断条件,根据条件决定循环是否继续执 行;二者区别: continue 只是结束本次循环,而不是终止整个循环的执行;break 则是结束整个循环过程,不再判断执行循环的条件是否成立;另: continue 只能用于循环体中;而 break 即可用于循环体中,还可用于 switch 语句中;基础练习 (A)一、选择题 下面有关 A) B) C) D) 来1、
16、for 循环的正确描述是 (for 循环只能用于循环次数已经确定的情况for 循环是先执行循环体语句,后判断表达式 在 for 循环中,不能用 break 语句跳出循环体 for 循环的循环体语句中,)。2、3、4、5、6、次7、A) B) C)D)对 for( 表达式 1。表达式 3) 可理解为(A)A) B)B)C)D)for( 表达式 1 。 for( 表达式 1 。 for( 表达式 1。 for( 表达式 1。下列说法中正确的是(0 。表达式 3)1 。表达式 3) 表达式 1。表达式 表达式 3。表达式)。可以包含多条语句,但必须用花括号括起)。3)3)A ) break 用在 s
17、witch 语句中,而 continue 用在循环语句中。 B ) break 用在循环语句中,而 continue 用在 switch 语句中。 C ) break 能结束循环,而 D ) continue 能结束循环, 以下正确的描述是( A)A )B)B )C)C )D)D )若 i 为整型变量,则以下循环执行次数是(for(i=2。i=0。) printf(“ d。,iA)无限次B) 0次以下 for 循环的执行次数是(for(x=0,y=0 。 (y=123)&(x+y 。 x=i+) i=x for( 。 x+=i) 。while(1) x+ 。 for(i=10 。 i-) su
18、m+=i 。i+4 。 )。后变量 i 的值是(B) 4)。t+)A)A)B)B)C)C)D)D)8、执行语句 for(i=1 。A) 39、下面程序段(t=100 。for(t=1 。scanf()。C) 1 次D) 2 次)。C)5C)D)执行 4 次)。不定D )执 行 3“d,&x) if(x0) continue 。 printf( “%3d。 ,t)A)C)下面程序段(当 x=0 时什么也不输出 最多允许输出 100 个非负整数B)10、x=3 。)。doy=x- 。if(!y) printf( 。 “conxt”in)ue 。 printf( “。#”) while(1=x=2)
19、 。B)将输出#*D )含有不合法的控制表达A)将输出#C)是死循环式、写出下列程序的运行结果1、#include main() int i 。for(i=1。i=5。i+) if(i%2) printf( 。“ * ”) else continue 。 printf(“。 #”) printf(“n”$。)2、#include main() int i,j 。for(i=4 。 i=1 。 i-)for(j=1 。 j=i 。 j+) putchar(。 #)for(j=1 。 j=4-i 。 j+) putchar( 。 * ) putcha r( n。) 3、#include main(
20、)int i,k=0 。for(i=1 。 i+)k+ 。 while(ki*i)k+ 。if(k%3=0) goto loop 。loop: printf(“ %d,%d”。 ,i,k)三、编程:1、求 1-3+5-7+ -99+101 的值。能力提高(B)一、写出下列程序的运行结果1、#includemain ()int i,j,x=O。for(i=0。 i2。 i+)x+。for(j=0 o j=3。 j+)if(j%2) continue。X+ oX+ oprintf(“ x=%d ,x)2、#in clude mai n()int i,j,k=19 。while(i=k-1)k-=3
21、 oif(k%5=0) i+ o continue 。 else if(k5) break 。i+ oprintf( “ i=%d,k=%d ,i,k)二、根据程序的功能将程序补充完整下面程序的功能是求1至1000之间满足“用3除余2;用5除余3;用7除余2”的数,且一行只打印5个数。#in cludemain ()int i,j=0 ofordif(i%3=2& i%5=3 & i%7= =2) printf( “ %4d ,i)j=j+1 oif() printf( n”)三、编程:1、有一分数序列 2/1 , 3/2 , 5/3 , 8/5 , 13/8 , 21/13,求出这个数列的前
22、 20项之和2、从键盘输入的10个整数中,找出第一个能被 7整除的数。若找到,打印此数后退出循环;若未找到,打印“not exist 。第3讲总复习,增强用循环解决实际问题的能力;基础练习 (A)一、 一、编程:1、每个苹果 0.8 元,第一天买 2 个苹果,第二天开始,每天买前一天的 2 倍,直至购买的 苹果个数达到不超过 100 的最大值。编写程序求每天平均花多少钱?1 、2 、编写程序,输出用一元人民币兑换成1 分、 2 分和 5 分硬币的不同兑换方法。3、输入 n 值,输出如图所示高为 n 的等腰三角形。*能力提高 (B)1、编写程序,从键盘输入 6 名学生的 5门成绩,分别统计出每个
23、学生的平均成绩。2、猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半 ,还不过瘾 ,又多吃了一个 . 第二天早上又将剩下的桃子吃掉一半,又多吃了一个 .以后每天早上都吃了前一天剩下的一半零一个 .到第 10 天早上再想吃时 ,只剩下一个桃子了 .求第一天一共摘了多少桃子 .链接二级考试一、选择题 1、以下程序的输出结果是()。A) 10 1 9 2 B) 9 8 7 6 C) 10 9 9 0 D) 10 10 9 1 main( ) int x=10 , y=10 , I;for(i=0 ;x8 ; y=+i) printf(%d ,%d ,x-,y);2、以下程序的输出结果是()。A)
24、 2 0 B) 3 1 C) 3 2 1 D) 2 1 0 main( ) int n=4 ; while(n-)printf(%d ,-n) ;3、以下程序的输出结果是()。A) #*#*# B) # C) * D) *#*#* main( ) int i ;for(i=1 ;i6 ;i+) if(i%2)printf(#) ; continue ; printf(*) ;printf(n) ;4、以下程序的输出结果是()。A) 编译不通过,无输出 B) acegC) acegi D) abcdefghi main( ) int i ; for(i=A ;iI;i+,i+) printf(%
25、c , i+32) ; printf( n) ;5、以下循环体的执行次数是()。A) 3 B) 2 C) 1 D) 0 main() int i,j 。for(i=0,j=1 。 i20) break 。 while(a=14) 。8、有如下程序main0 int i,sum 。for(i=1。i6)n- 。 printf( 该程序段的输出结果是()。 A) 987 B) 876 C) 8765 D) 98761 1 、有以下程序段int k=0while(k=1)k+ 。while 循环执行的次数是()。A) 无限次C) 一次也不执行12 、有以下程序段int x=3do printf(“
26、%-d=”2),x。 while (!(-x) 。 其输出结果是()。A) 1 B) 3 0C) 1 -2%d”。 ,n)B) 有语法错,不能执行D) 执行 1 次D) 死循环13、t 为 int 类型,进人下面的循环之前, while( t=l ) 则以下叙述中正确的是()。A) 循环控制表达式的值为 0C) 循环控制表达式不合法t 的值为 0B)循环控制表达式的值为1D)以上说法都不对14、以下程序的输出结果是()。main() int num= 0 。 while(num=2) num+ 。 printf(“ n%”d ,nu m 。)15、16、17、D) lD) 4D) 20A) 1
27、B) 1C)12 223 34 以下程序的输出结果是()。main() int a, b 。for(a=1, b=1 。 a=10) break 。if (b%3= =1) b+=3 。 continue 。 printf( “ %n”d ,a。)A) 101 B) 6 C) 5 以下程序中, while 循环的循环次数是()。main() int i=0 。while(i10) if(i1) continue 。 if(i=5) break 。i+ 。A) 1 B) 10C) 6 D) 死循环,不能确定 以下程序的输出结果是()。main() int a=0,i 。for(i=。i5。i+)
28、 switch(i) case 0:case 3:a+=2 。case 1:case 2:a+=3 。 default:a+=5 。printf(%dn,a) 。A) 31 B) 13 C) 10 以下程序的输出结果是()。#include main() int i=0,a=0 。while(i20) for( 。 ) if(i%10)=0) break 。 elsei-。i+=11 。 a+=i 。 printh(%dn,a) 。A) 21 B) 32 C) 33 D) 1119 、以下程序的功能是:按顺序读入 10 名学生 4 门课程的成绩,计算出每位学生的平均 分并输出,程序如下:mai
29、n() int n,k 。float score ,sum,ave 。sum=0.0 。for(n=1。n=10。n+) for(k=1 。 k=4 。 k+) seanf(“ f”,&scoreSum+=score 。 ave=sum/4.0 。printf(“ NO%d:%n”f ,n,ave)。 上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这 条语句是()。A) sum=0.0 。B) sum+=score 。C) ave=sun/4.0 。D) printf(“ NO%d:n%”f ,n,ave)。20 、有以下程序段int n=0,p 。 doscanf(
30、“ d ,&p)n+。 while(p!=12345& n3)。此处 dowhile 循环的结束条件是()。A) P 的值不等于 12345 并且 n 的值小于 3B) P 的值等于 12345 并且 n 的值大于等于 3C) P 的值不等于 12345 或者 n 的值小于 3D) P 的值等于 12345 或者 n 的值大于等于 321 、有以下程序main()inti。for(i=0 。 i3 。 i+)switch(i)case 1:printf(%d,i) 。case 2:printf(%d,i) 。default: printf(%d,i) 。执行后输出结果是()。A) 011122
31、 B) 012 C) 012020D) 12022 、有以下程序main() int i=0,s=0 。doif(i%2)i+ 。 continue 。 i+ 。s +=i。while(i7)。printf(%dn,s)。执行后输出结果是()。A) 16B) 12C) 28D) 2123、有以下程序main () int s=0,a=1,n 。scanf(%d,&n)。do s+=1。 a=a-2。while(a!=n)。printf(%dn,s)。若要使程序的输出值为2,则应该从键盘给n输入的值是()。A) -1B) -3C)-5D) 024、 若有如下程序段,其中s、a、b、c均已定义为整
32、型变量,且a、c均已赋值(c大于0)s=a。for(b=1。b=c。b+) s=s+1。则与上述程序段功能等价的赋值语句是()。A)s=a+b 。B)s=a+c 。 C)s=s+c 。 D)s=b+c 。25、有以下程序main () int k=4,n=4 。for( 。 n1。n-)s=s+1/n 。prin t(%6.4fn,s)。程序运行后输出结果错误,导致错误结果的程序行是()。A) s=1.0。C) s=s+1/n。二、填空题B) for(n=10 。 n1。n-)D) prin tf(%6.4f/n,s)。1、下面程序的功能是:计算1到10之间奇数之和及偶数之和,请填空。#in
33、cludemain () int a, b, c, i 。a=c=O。for(i=0。i10。i+=2) a+=i。c+=b。printf(” 偶数之和=%dn”,a)。printf(奇数之和=%dn”,c-11)。 (2000 年 4 月)2、下面程序的功能是:输出100以内能被3整除且个位数为#in cludemain () int i, j。for(i=0。JU。i+) j=i*10+6。if()continue 。printf(%d,j)。3、 要使以下程序段输出10个整数,请填入一个整数。for(i=0。i=。printf(“”,i+=2)。4、 函数pi的功能是根据以下近似公式求n值:(n *n )/6=1 + 1/(2*2)+1/(3*3)+.+1/(n*n)现在请你在下面的函数中填空,完成求 n的功能。#include“ math.h ”double pi( long n) double s=0.0 。 lon
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论