第六章循环结构程序设计 .docx
精品名师归纳总结第六章循环结构程序设计学号姓名班级成果ABC学习目的与要求:1、领悟程序设计中构成循环的三要素。2 、把握 for 、 while 、 do-while语句的用法。3 、明白 break 、 continue在循环语句中的作用。重点:for 、 while 、 do-while语句的用法。第 1 讲学问归纳:1、while 语句:while 条件 语句 / 假如不加花括弧,while语句的范畴只有一个语句。(1) 循环三要素:循环变量初值、循环条件、循环趋于终止语句。(2) 在循环体中应有使循环趋向于终止的语句。2、do while 语句:do语句 / 假如不加花括弧,dowhile语句的范畴只有一个语句。 while 条件 。(1) 循环三要素:循环变量初值、循环条件、循环趋于终止语句。(2) 留意: do while循环与 while循环的区分。基础练习 A一、挑选题1、C 语言中 while 和 do-while循环的主要区分是()。A) do-while的循环体至少无条件执行一次B) while的循环掌握条件比do-while的循环掌握条件严格C) Cdo-while答应从外部转到循环体内D) do-while的循环体不能是复合语句2、以下描述中正确选项()。A) 由于 do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句B) Bdo-while循环由 do 开头,用 while 终止,在 while (表达式)后面不能写分号C) 在 do-while循环体中,肯定要有能使while 后面表达式的值变为零(“假”)的操作CCdo-while循环中,依据情形可以省略while 3、设有程序段int k=10 。whilek k=k-1。就下面描述中正确选项()。A) while 循环执行 10 次B)循环是无限循环C)循环体语句一次也不执行D)循环体语句执行一次4、以下循环语句中有语法错误选项()。可编辑资料 - - - 欢迎下载精品名师归纳总结A whilex=y 5。 B while0。C do 2 。 whilex=b 。 D do x+ whilex=10。5、已知 int i=1 。执行语句 while i+<4。后,变量 i 的值为()。A 3 B 4 C 5 D 66、语句 while.E 。中的表达式 .E 等价于()。A) E=0B) E.=1C) E.=0D) E=17、下面程序段的运行结果是()。a=1 。 b=2 。 c=2 。whilea<b<c t=a 。 a=b 。 b=t 。 c- 。 printf“ %d,%d,%d” ,a,b。,cA) 1,2,0B)2,1,0C) 1,2,1D) 2,1,18、下面程序的运行结果是()。#include< stdio.h> mainint num=0 。whilenum<=2num+ 。printf“ %n”d ,num。A) 1B) 1C) 1D) 1222339、以下能正确运算1 × 2× 3 ×× 10 的程序段是()。A)doi=1 。 s=1 。B) doi=1 。 s=0 。s=s*i 。s=s*i 。i+ 。i+ 。whilei<=10。whilei<=10。C) i=1 。 s=1 。D ) i=1 。 s=0 。dos=s*i 。dos=s*i 。i+ 。i+ 。whilei<=10。whilei<=10。10 、下面程序的运行结果是()。#include< stdio.h> mainint y=10 。do y- 。 while-y 。printf“ %n”d ,-y- 。A) -1B)1C) 8D) 0 11 、已知 int i=1,j=0 。执行下面语句后j 的值是()。whileiswitchi case 1: i+=1。 j+ 。 break 。 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< stdio.h> mainint c 。whilec=getchar.= n switchc- 2 case 0:case 1: putcharc+4。case 2: putcharc+4。 break 。case 3: putcharc+3。default: putcharc+2。 break 。可编辑资料 - - - 欢迎下载精品名师归纳总结printfn“”。可编辑资料 - - - 欢迎下载精品名师归纳总结A) 668977B) 668966C) 66778777D)6688766二、填空题1、执行下面程序段后,k 值是。k=1 。 n=263 。do k*=n%10。 n/=10 。 whilen 。2、下面程序的运行结果是。#include< stdio.h> mainint a,s,n,count。a=2 。 s=0 。 n=1 。 count=1 。whilecount<=7 n=n*a。 s=s+n 。 +count 。 printf“ s=%sd”。,3、下面程序段的运行结果是。x=2 。do printf“。*x”-。 while.x=0。4、当运行以下程序时,从键盘键入China#<CR>( <CR> 代表回车),就下面程序的运行结果是。#include< stdio.h> mainint v1=0,v2=0。 char ch 。whilech=getchar.= # switchchcase a:case h: default: v1+ 。case o : v2。+可编辑资料 - - - 欢迎下载精品名师归纳总结三、编程:printf“ %d,%n”d,v1,v2。可编辑资料 - - - 欢迎下载精品名师归纳总结1、编程求 1*3*5*7*9的值可编辑资料 - - - 欢迎下载精品名师归纳总结2、编写程序运算以下算式的值:直到某一项 A<=0.000001时为止。输出最终的值。3、从键盘输入的字符中统计数字字符的个数,用换行符终止循环。才能提高 B一、挑选填空题1、下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数 n,并输出 m、n 中的较大者,请挑选填空。#include< stdio.h>mainint m=0,n=0 。char c 。while.= n ifc>= A &&c<= Zm+ 。ifc>= a&&c<= z n+ 。printf“ %n”d ,m<n.。(1) A ) c=getchar B) getcharC) scanf “ %c” ,c(2) A ) n:mB) m:nC) m:mD) n:n2 、下面程序的功能是在输入的一批正整数中求出最大者,输入0 终止循环,请挑选填空。#include< stdio.h> mainint a,max=0 。scanf “ %d” ,&。a whileifmax<a max=a。scanf “ %d” ,&。aprintf“ %d” ,m。axA) a=0B)aC) .a=1D) .a3、下面程序的功能是运算正整数2345 的各位数字平方和,请挑选填空。#include< stdio.h> mainint n,sum=0 。n=2345 。dosum=sum+ 。n= 。whilen 。可编辑资料 - - - 欢迎下载精品名师归纳总结printf“ sum=%d” ,su。m1 A ) n%10B) n%10*n%10C) n/10D) n/10*n/10 2 A ) n/1000B) n/100C) n/10D) n%10二、读懂程序,并依据程序的功能将程序补充完整1、下面程序的功能是用“辗转想除法”求两个正整数的最大公约数。请填空。#include< stdio.h>mainint r,m,n 。scanf “ %d %d” ,&m,&n。 ifm<n 。r=m%n 。whiler m=n。 n=r 。 r=。 printf“ %n”d ,n。2、下面程序的功能是用do-while 语句求 1 至 1000 之间满意“用 3 除余 2。用 5 除余 3 。 用 7 除余 2 ”的数,且一行只打印五个数。请填空。#include< stdio.h>mainint i=1,j=0 。do可编辑资料 - - - 欢迎下载精品名师归纳总结ifprintf“ %4d”。,i j=j+1 。可编辑资料 - - - 欢迎下载精品名师归纳总结i=i+1 。if printfn”。“可编辑资料 - - - 欢迎下载精品名师归纳总结whilei<1000。3、等差数列的第一项a=2 ,公差 d=3 ,下面程序的功能是在前n 项和中,输出能被4 整除的全部的和。请填空。#include< stdio.h> mainint a,d,sum 。a=2 。 d=3 。 sum=0 。do可编辑资料 - - - 欢迎下载精品名师归纳总结。三、编程:sum+=a 。if printf “ %dn” ,sum。whilesum<200。可编辑资料 - - - 欢迎下载精品名师归纳总结1、从键盘输入任意的字符,按以下规章进行分类计数。 第一类 '0', '1' ,'2' , '3' ,'4' , '5' ,'6' , '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 讲学问归纳 :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 。 表达式 2 。 表达式 3 。 语句 2、循环的嵌套1 三种循环可以相互嵌套。3、break 和 continue(1) break语句作用:强行终止循环,转到循环体下面语句去执行。(2) continue语句作用:终止本次循环,再去判定条件,依据条件打算循环是否连续执行。二者区分: continue只是终止本次循环,而不是终止整个循环的执行。break 就是终止整个循环过程,不再判定执行循环的条件是否成立。 另: continue只能用于循环体中。可编辑资料 - - - 欢迎下载精品名师归纳总结而 break 即可用于循环体中,仍可用于switch 语句中。基础练习 A一、 一、挑选题1、下面有关 for 循环的正确描述是()。A) A )for 循环只能用于循环次数已经确定的情形B) B )for 循环是先执行循环体语句,后判定表达式C) C )在 for 循环中,不能用 break 语句跳出循环体D) D ) for循环的循环体语句中,可以包含多条语句,但必需用花括号括起来2、对 for 表达式 1。表达式 3 可懂得为()。A) A)for 表达式 1 。0。表达式 3 B) B)for 表达式 1 。1。表达式 3C) for 表达式 1。 表达式 1。表达式 3 D) for 表达式 1。 表达式 3。表达式 33、以下说法中正确选项()。A ) break 用在 switch 语句中,而 continue 用在循环语句中。B) break 用在循环语句中,而 continue 用在 switch 语句中。C) break 能终止循环,而 continue 只能终止本次循环。D) continue能终止循环,而 break 只能终止本次循环。4、以下正确的描述是()。A) A )continue语句的作用是终止整个循环的执行B) B )只能在循环体内和switch 语句体内使用break 语句C) C )在循环体内使用break 语句或 continue语句的作用相同D) D )从多层循环嵌套中退出时,只能使用goto 语句5、如 i 为整型变量,就以下循环执行次数是()。fori=2 。i=0 。 printf“ %-d”。,iA)无限次B) 0 次C) 1 次D) 2 次6、以下 for 循环的执行次数是()。forx=0,y=0 。 y=123&&x<4。x+A)是无限循环B)循环次数不定C)执行 4 次D )执 行 3次7、以下不是无限循环的语句为()。A) A )fory=0,x=1 。x>+y 。x=i+ i=xB) B )for 。 x+=i 。C) C )while1 x+。 D) D )fori=10 。 i- sum+=i 。8、执行语句 fori=1 。i+<4 。后变量 i 的值是()。A) 3B) 4C) 5D)不定9、下面程序段()。fort=1 。t<=100 。t+scanf “ %d” ,&。x ifx<0 continue 。printf “ %3d”。,tA)当 x<0 时整个循环终止B) x>=0 时什么也不输出C) printf 函数永久也不执行D)最多答应输出 100 个非负整数10 、下面程序段()。x=3 。可编辑资料 - - - 欢迎下载精品名师归纳总结doy=x- 。if.y printf。printf“。#”“conxt”inue 。 可编辑资料 - - - 欢迎下载精品名师归纳总结while1<=x<=2。A)将输出 #B)将输出 #*C)是死循环D )含有不合法的掌握表达式二、写出以下程序的运行结果1、 #include< stdio.h>mainint i 。fori=1 。i<=5 。i+ifi%2 printf。“ * ”else continue。printf“。#”printf“n”$。2、 #include <stdio.h>mainint i,j 。fori=4 。i>=1 。i-forj=1 。j<=i 。 j+ putchar。# forj=1 。j<=4-i 。 j+ putchar。* putcha r n。3、 #include <stdio.h>mainint i,k=0 。fori=1 。 i+k+ 。whilek<i*ik+ 。ifk%3=0 goto loop。loop: printf“ %d,%d”。,i,k三、编程:1、求 1-3+5-7+ -99+101 的值。可编辑资料 - - - 欢迎下载精品名师归纳总结才能提高 B一、写出以下程序的运行结果1、 #include< stdio.h>mainint i,j,x=0 。fori=0 。i<2 。i+x+ 。forj=0 。j<=3 。j+可编辑资料 - - - 欢迎下载精品名师归纳总结x+ 。ifj%2 continue。x+ 。可编辑资料 - - - 欢迎下载精品名师归纳总结printf“ x=%n”d,x。可编辑资料 - - - 欢迎下载精品名师归纳总结2、 #include <stdio.h>mainint i,j,k=19 。whilei=k-1k-=3 。ifk%5=0 i+。 continue 。 else ifk<5 break。i+ 。printf“ i=%d,k=%nd” ,i,k。二、依据程序的功能将程序补充完整下面程序的功能是求1 至 1000 之间满意“用 3 除余 2。用 5 除余 3。用 7 除余 2 ”的数,且一行只打印5 个数。#include< stdio.h>mainint i,j=0 。for ifi%3=2&& i%5=3 && i%7= =2 printf“ %4。d” ,ij=j+1 。可编辑资料 - - - 欢迎下载精品名师归纳总结三、编程:if printfn”。“可编辑资料 - - - 欢迎下载精品名师归纳总结1、有一分数序列 2/1 , 3/2 , 5/3 , 8/5 , 13/8 , 21/13 , 求出这个数列的前20 项之和2、从键盘输入的10 个整数中,找出第一个能被7 整除的数。如找到,打印此数后退出循环。如未找到,打印“not exist ”。可编辑资料 - - - 欢迎下载精品名师归纳总结第 3 讲总复习,增强用循环解决实际问题的才能。基础练习 A一、 一、编程:1、每个苹果0.8 元,第一天买 2 个苹果,其次天开头,每天买前一天的2 倍,直至购买的苹果个数达到不超过100 的最大值。编写程序求每天平均花多少钱?1、2、编写程序,输出用一元人民币兑换成1 分、 2 分和 5 分硬币的不同兑换方法。3、输入 n 值,输出如下列图高为n 的等腰三角形。*才能提高 B1、编写程序,从键盘输入6 名同学的 5 门成果,分别统计出每个同学的平均成果。2 、猴子吃桃问题。猴子第一天摘下如干个桃子,当即吃了一半 ,仍不过瘾 ,又多吃了一个 . 其次天早上又将剩下的桃子吃掉一半,又多吃了一个 .以后每天早上都吃了前一天剩下的一半零一个 .到第 10 天早上再想吃时 ,只剩下一个桃子了 .求第一天一共摘了多少桃子.链接二级考试一、挑选题1、以下程序的输出结果是()。A 10 1 9 2 B 9 8 7 6 C 10 9 9 0 D 10 10 9 1main int x=10 , y=10 , I。 fori=0 。 x>8 。 y=+i printf"%d , %d " ,x- ,y。可编辑资料 - - - 欢迎下载精品名师归纳总结2、以下程序的输出结果是()。A 2 0 B 3 1 C 3 2 1 D 2 1 0main int n=4 。whilen-printf"%d ", -n 。3、以下程序的输出结果是()。A #*#*# B # C * D *#*#* main int i 。fori=1 。i<6 。 i+ ifi%2printf"#"。 continue 。 printf"*" 。printf"n" 。4、以下程序的输出结果是()。A 编译不通过,无输出B acegC acegi D abcdefghi main int i 。fori='A' 。 i<'I' 。 i+ , i+ printf"%c", i+32 。printf" n" 。5、以下循环体的执行次数是()。A 3 B 2 C 1 D 0main int i,j 。fori=0,j=1 。 i<=j+1 。 i+=2, j-printf"%d n",i。6、以下表达正确选项()。A) do-while语句构成的循环不能用其它语句构成的循环来代替。B) do-while语句构成的循环只能用break 语句退出。C 用 do-while语句构成的循环,在 while 后的表达式为非零时终止循环。D 用 do-while语句构成的循环,在 while 后的表达式为零时终止循环。7、以下程序段的执行结果是()。A a=12 y=12 B a=12 y=12a=14 y=16 a=16 y=28 a=16 y=20a=18 y=24C a=12 y=12 D a=12 y=12 a=14 y=26a=14 y=44int a, y 。a=10 。 y=0 。do a+=2 。 y+=a 。printf"a=%d y=%dn",a,y。ify>20 break。 whilea=14。可编辑资料 - - - 欢迎下载精品名师归纳总结8、有如下程序main0 int i,sum 。fori=1 。i<=3 。sum+sum+=i。printf“ %n”d ,sum。该程序的执行结果是()。A) 6 B 3 C不确定 D 0 9、有如下程序main int x=23 。do printf“ %-d-”。,x while.x 。该程序的执行结果是()。A 321 B 23 C不输出任何内容 D 陷入死循10 、有如下程序main int n=9 。whilen>6n-。printf“ %d”。,n该程序段的输出结果是()。A 987 B 876 C 8765 D 987611、有以下程序段int k=0 whilek=1k+。while 循环执行的次数是()。A) 无限次B 有语法错,不能执行C 一次也不执行D 执行 1 次12 、有以下程序段int x=3 do printf“ %-d=”2,x。 while .-x。其输出结果是()。A 1 B 3 0C 1 -2D 死循环13 、t 为 int 类型,进人下面的循环之前,t 的值为 0 while t=l 就以下表达中正确选项()。A) 循环掌握表达式的值为0B循环掌握表达式的值为1C 循环掌握表达式不合法D以上说法都不对14 、以下程序的输出结果是()。main int num= 0。whilenum<=2 num+ 。 printf“ %n”d ,num。可编辑资料 - - - 欢迎下载精品名师归纳总结A) 1B 1C1D l 22233415 、以下程序的输出结果是()。main int a, b 。fora=1, b=1 。 a<=100 。 a+ ifb>=10 break。if b%3= =1 b+=3 。 continue 。 可编辑资料 - - - 欢迎下载精品名师归纳总结printf“ %n”d,a。可编辑资料 - - - 欢迎下载精品名师归纳总结A 101B 6C 5D 416 、以下程序中, while 循环的循环次数是()。main int i=0 。whilei<10 ifi<1 continue。ifi=5 break。i+ 。.A 1B 10C 6D 死循环,不能确定17 、以下程序的输出结果是()。main int a=0,i 。fori= 。i<5 。i+ switchi case 0:case 3:a+=2 。case 1:case 2:a+=3 。default:a+=5 。printf"%dn",a。A 31B 13C 10D 2018 、以下程序的输出结果是()。#include <stdio.h> main int i=0,a=0。whilei<20 for 。 ifi%10=0 break。elsei- 。可编辑资料 - - - 欢迎下载精品名师归纳总结i+=11 。 a+=i 。printh"%dn",a。A 21 B 32 C 33 D 1119 、以下程序的功能是:按次序读入10 名同学 4 门课程的成果,运算出每位同学的平均分并输出,程序如下:main int n,k 。float score ,sum,ave。sum=0.0 。forn=1 。n<=10 。n+ fork=1 。 k<=4 。k+ scanf“ %f” ,&sco。resum+=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%”f20 、有以下程序段int n=0,p 。doscanf“ %d” ,&。pn+ 。whilep.=12345&& n<3。此处 do while 循环的终止条件是()。A) P 的值不等于 12345 并且 n 的值小于 3B) P 的值等于 12345 并且 n 的值大于等于 3C) P 的值不等于 12345 或者 n 的值小于 3D) P 的值等于 12345 或者 n 的值大于等于 321 、有以下程序maininti。fori=0 。i<3 。i+switchi,n,ave。可编辑资料 - - - 欢迎下载精品名师归纳总结case1:printf"%d",i。case2:printf"%d",i。default: printf"%d",i 。执行后输出结果是()。A 011122B 012C 012021D 12022 、有以下程序main inti=0,s=0 。doifi%2i+ 。 continue 。 i+ 。可编辑资料 - - - 欢迎下载精品名师归纳总结s +=i 。whilei<7 。printf"%dn",s。执行后输出结果是()。A 16B 12C 28D 2123 、有以下程序main int s=0,a=1,n。scanf"%d",&n。do s+=1 。 a=a-2 。 whilea.=n 。printf"%dn",s。如要使程序的输出值为2,就应当从键盘给n 输入的值是()。A -1B -3C-5D 024 、如有如下程序段,其中s、a、b、c 均已定义为整型变量,且a、c 均已赋值 c 大于 0 s=a 。forb=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 。 n<k 。 n+ 。ifn%3.=0 continue。k- 。 printf"%d,%dn",k,n。程序运行后的输出结果是()。A 1,1B 2,2C 3,3 D 4,4可编辑资料 - - - 欢迎下载精品名师归纳总结26 、要求以下程序的功能是运算: main int n 。 float s 。s=1.0 。forn=10 。n>1 。 n- s=s+1/n 。print"%6.4fn",s。s1121 .1310可编辑资料 - - - 欢迎下载精品名师归纳总结程序运行后输出结果错误,导致错误结果的程序行是()。A s=1.0 。B forn=10 。n>1 。n-C s=s+1/n 。D printf"%6.4f/n",s。二、填空题1、下面程序的功能是 : 运算 1 到 10 之间奇数之和及偶数之和,请填空。#include< stdio.h>main int a, b, c, i 。可编辑资料 - - - 欢迎下载精品名师归纳总结a=c=0 。fori=0 。i<10 。i+=2 a+=i 。 。c+=b 。printf" 偶数之和 =%dn",a 。printf" 奇数之和 =%dn",c-11 。 ( 2000 年 4 月)2、下面程序的功能是 : 输出 100 以内能被 3 整除且个位数为 6 的全部整数 ,请填空。#include< stdio.h>main int i, j 。fori=0 。 1 。 i+ j=i*10+6 。if 2 continue。