2022年第六章循环结构程序设计.docx
精选学习资料 - - - - - - - - - 第六章循环结构程序设计学号姓名班级成果 A B C 学习目的与要求:1、领悟程序设计中构成循环的三要素;2 、把握 for 、 while 、 do-while 语句的用法;3 、明白 break 、 continue 在循环语句中的作用;重点:for 、 while 、 do-while 语句的用法;第 1 讲学问归纳:1、while 语句:while 条件 语句 / 假如不加花括弧,while 语句的范畴只有一个语句; 1 循环三要素:循环变量初值、循环条件、循环趋于终止语句;2 在循环体中应有使循环趋向于终止的语句;2、do while 语句:do while语句的范畴只有一个语句;do 语句 / 假如不加花括弧, 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 C 在 do-while 操作 C Cdo-while循环由 do 开头,用 while 终止,在 while (表达式)后面不能写分号循环体中,肯定要有能使while 后面表达式的值变为零(“ 假” )的循环中,依据情形可以省略while 3、设有程序段int k=10 ;whilek k=k-1;B)循环是无限循环就下面描述中正确选项();A)while 循环执行 10 次C)循环体语句一次也不执行 4、以下循环语句中有语法错误选项();D)循环体语句执行一次名师归纳总结 - - - - - - -第 1 页,共 18 页精选学习资料 - - - - - - - - - A whilex=y 5; B while0 ;C do 2 ;whilex=b ; D do x+ whilex=10 ;5、已知 int i=1 ;执行语句while i+<4 ;后,变量i 的值为();D) E=1 A 3 B 4 C 5 D 6 ;6、语句 while.E ;中的表达式 .E 等价于()A)E=0 B)E.=1 C)E.=0 7、下面程序段的运行结果是();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,0 B)2,1,0 C)1,2,1 D)2,1,1 8、下面程序的运行结果是();#include< stdio.h> main int num=0 ;whilenum<=2 num+ ;printf“ %d n” ,num;C)1 D)1 3 A)1 B)1 2 2 2 3 9、以下能正确运算1× 2× 3× × 10 的程序段是();B)doi=1 ; s=0 ;s=0 ; A)doi=1 ; s=1 ;s=s*i ; s=s*i ; i+ ; i+ ; whilei<=10 ; whilei<=10 ;C)i=1 ; s=1 ; D ) i=1 ; dos=s*i ; dos=s*i ; i+ ; i+ ; whilei<=10 ; whilei<=10 ;10 、下面程序的运行结果是();#include< stdio.h> main int y=10 ;do y- ; while-y ;printf“ %d n” ,y-; D)0 A)-1 B)1 C)8 11 、已知 int i=1,j=0 ;执行下面语句后j 的值是();whilei switchi case 1: i+=1; j+;break ;case 2: i+=2 ; j+;break ;case 3: i+=3 ; j+;break ;default: i- ;j+ ;break ;名师归纳总结 死循环第 2 页,共 18 页A 1 B 2 C 3 D - - - - - - -精选学习资料 - - - - - - - - - 12 、 如 运 行 以 下 程 序 时 , 从 键 盘 输 入();#include< stdio.h> main int c ;2473< 回 车 > , 就 下 面 程 序 的 运 行 结 果 是 whilec=getchar.=n D)switchc- 2 case 0: case 1: putcharc+4;case 2: putcharc+4; break ; case 3: putcharc+3;default: putcharc+2; break ; printfn” ;A)668977 B)668966 C)66778777 6688766 k 值是;二、填空题1、执行下面程序段后,k=1 ; n=263 ;do k*=n%10 ; n/=10 ; whilen ;2、下面程序的运行结果是;#include< stdio.h> main int a,s,n,count ;a=2 ; s=0 ; n=1 ; count=1 ; whilecount<=7 n=n*a; s=s+n ; +count ; printf“ s=%d” ,3、下面程序段的运行结果是;x=2 ;do printf; x- ; while.x=0 ;4、当运行以下程序时,从键盘键入 结果是;China#<CR> (<CR> 代表回车),就下面程序的运行#include< stdio.h> main int v1=0,v2=0 ; char ch ;whilech=getchar.=#switchch case a:case h:default: v1+ ; case o: v2+printf“ %d,%d n” ,v1,v2;三、编程:1、编程求 1*3*5*7*9 的值名师归纳总结 - - - - - - -第 3 页,共 18 页精选学习资料 - - - - - - - - - 2、编写程序运算以下算式的值:直到某一项A<=0.000001时为止;输出最终的值;3、从键盘输入的字符中统计数字字符的个数,用换行符终止循环;才能提高 B 一、挑选填空题 1、下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数 m 和小写字母的个数 n,并输出 m、n 中的较大者,请挑选填空;#include< stdio.h> main int m=0,n=0 ;char c ;while.= n ifc>= A&&c<= Zm+ ;ifc>= a&&c<= zn+ ; printf“ %d n” ,m<n.;C)scanf “ %c” ,cD) n:n 1 A )c=getchar B)getchar 2 A )n:m B)m:n C)m:m 2、下面程序的功能是在输入的一批正整数中求出最大者,输入空;#include< stdio.h> main int a,max=0 ;scanf “ %d” ,&awhile ifmax<a max=a;D).a scanf “ %d” ,&aprintf“ %d” ,maxA)a=0 B)a C).a=1 0 终止循环,请挑选填3、下面程序的功能是运算正整数 2345 的各位数字平方和,请挑选填空;#include< stdio.h> main int n,sum=0 ;n=2345 ;do sum=sum+ ;n=;whilen ;名师归纳总结 - - - - - - -第 4 页,共 18 页精选学习资料 - - - - - - - - - printf“ sum=%d” ,sumC)n/10 D)n/10*n/10 1 A )n%10 B)n%10*n%10 2 A )n/1000 B)n/100 C)n/10 D)n%10 二、读懂程序,并依据程序的功能将程序补充完整1、下面程序的功能是用“ 辗转想除法” 求两个正整数的最大公约数;请填空;#include< stdio.h> main int r,m,n ;scanf “ %d %d” ,&m,&n;ifm<n ;r=m%n ;whiler m=n ; n=r ; r=; printf“ %d n” ,n;3 除余 2;用 5 除余 3; do-while 语句求 1 至 1000 之间满意“ 用2、下面程序的功能是用用 7 除余 2” 的数,且一行只打印五个数;请填空;#include< stdio.h> main int i=1,j=0 ;do if printf“ %4d” ,i j=j+1 ; if printfn” ;i=i+1 ;whilei<1000 ;n 项和中,输出能被4 整除 3、等差数列的第一项a=2 ,公差 d=3 ,下面程序的功能是在前的全部的和;请填空;#include< stdio.h> main int 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' 其次类 '+','-','*','/','%' ,'=' 第三类其它字符当输入字符 ''时先计数,然后停止接收输入,打印计数的结果;名师归纳总结 - - - - - - -第 5 页,共 18 页精选学习资料 - - - - - - - - - 2、求解爱因斯坦数学题;有一条长阶梯,如每步跨 阶,就最终剩 2 阶,如每步跨 5 阶,就最终剩2 阶,就最终剩余 1 阶,如每步跨 34 阶,如每步跨 6 阶就最终剩 5 阶,如每步跨 7 阶,最终才正好一阶不剩;请问,这条阶梯共有多少阶 . 分析:据题意,阶梯数满意下面一组同余式:x mod 2=1 x mod 3=2 x mod 5=4 x mod 6=5 x mod 7=0 3、从键盘上输入如干同学的成果,统计并输出最高成果和最低成果,当输入负数时终止 输入;第 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 只能用于循环体中;名师归纳总结 - - - - - - -第 6 页,共 18 页精选学习资料 - - - - - - - - - 而 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;表达式 3 C)for 表达式 1; 表达式 1;表达式 3 D)for 表达式 1; 表达式 3;表达式 3 3、以下说法中正确选项();A) break 用在 switch 语句中,而continue 用在循环语句中;B) break 用在循环语句中,而 continue 用在 switch 语句中;C) break 能终止循环,而continue 只能终止本次循环;D) continue能终止循环,而break 只能终止本次循环; D)2 次34、以下正确的描述是();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 次6、以下 for 循环的执行次数是();D )执 行forx=0,y=0 ; y=123&&x<4;x+ A)是无限循环 B)循环次数不定C)执行 4 次次7、以下不是无限循环的语句为();A)A)fory=0,x=1 ;x>+y ;x=i+ i=x B)B)for ; x+=i ;C)C)while1 x+; D)D)fori=10 ; i- sum+=i ;8、执行语句 fori=1 ;i+<4 ;后变量 i 的值是();A)3 B)4 C)5 D)不定9、下面程序段();fort=1 ;t<=100 ;t+ scanf “ %d” ,&xifx<0 continue;printf“ %3d” ,tA)当 x<0 时整个循环终止B)x>=0 时什么也不输出C)printf 函数永久也不执行D)最多答应输出100 个非负整数10 、下面程序段();x=3 ;名师归纳总结 - - - - - - -第 7 页,共 18 页精选学习资料 - - - - - - - - - do y=x- ;if.y printf; continue ; B)将输出 #* printf“ #” while1<=x<=2;A)将输出 # C)是死循环D)含有不合法的掌握表达式 二、写出以下程序的运行结果1、 #include< stdio.h> main int i ;fori=1 ;i<=5 ;i+ “ *” ifi%2 printf;else continue ; printf“ #” printfn” ;2、 #include <stdio.h> main int 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> main int i,k=0 ;fori=1 ; i+ k+ ;whilek<i*i k+ ;loop: printf ifk%3=0 goto loop; “ %d,%d” ,i,k三、编程:1、求 1-3+5-7+ -99+101 的值;名师归纳总结 - - - - - - -第 8 页,共 18 页精选学习资料 - - - - - - - - - 才能提高 B 一、写出以下程序的运行结果1、 #include< stdio.h> main int i,j,x=0 ;fori=0 ;i<2 ;i+ x+ ;forj=0 ;j<=3 ;j+ ifj%2 continue;x+ ; printfx+ ;“ x=%d n” ,x; 2、 #include <stdio.h> main int i,j,k=19 ;whilei=k-1 k-=3 ;ifk%5=0 i+; continue ; else ifk<5 break;i+ ; “ i=%d,k=%d n” ,i,k;printf二、依据程序的功能将程序补充完整 下面程序的功能是求 1 至 1000 之间满意“ 用 3 除余 2;用 5 除余 3;用 7 除余 2” 的数,且一行只打印 5 个数;#include< stdio.h> main int i,j=0 ;for ifi%3=2&& i%5=3 && i%7= =2 printf“ %4d” ,ij=j+1 ; if printfn” ;三、编程:1、有一分数序列 2/1 ,3/2,5/3, 8/5,13/8 , 21/13 , 求出这个数列的前20 项之和2、从键盘输入的 10 个整数中,找出第一个能被环;如未找到,打印“not exist ” ;7 整除的数;如找到,打印此数后退出循名师归纳总结 - - - - - - -第 9 页,共 18 页精选学习资料 - - - - - - - - - 第 3 讲总复习,增强用循环解决实际问题的才能;基础练习 A 一、 一、编程:1、每个苹果 0.8 元,第一天买 2 个苹果,其次天开头,每天买前一天的 2 倍,直至购买的苹果个数达到不超过 100 的最大值;编写程序求每天平均花多少钱?1、2、编写程序,输出用一元人民币兑换成 1 分、 2 分和 5 分硬币的不同兑换方法;3、输入 n 值,输出如下列图高为 * * * * * * n 的等腰三角形;才能提高 B 1、编写程序,从键盘输入6 名同学的 5 门成果,分别统计出每个同学的平均成果;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;fori=0 ;x>8 ;y=+i printf"%d ,%d " ,x- ,y; 名师归纳总结 - - - - - - -第 10 页,共 18 页精选学习资料 - - - - - - - - - 2、以下程序的输出结果是();A 2 0 B 3 1 C 3 2 1 D 2 1 0 main 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 编译不通过,无输出 C acegi D abcdefghi main B aceg int i ;fori='A' ;i<'I' ;i+ ,i+ printf"%c" , i+32 ;printf" n" ; 5、以下循环体的执行次数是();A 3 B 2 C 1 D 0 main 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 语句构成的循环 D 用 do-while 语句构成的循环,在 while 后的表达式为非零时终止循环;,在 while 后的表达式为零时终止循环;7、以下程序段的执行结果是();A a=12 y=12 B a=12 y=12 a=14 y=16 a=16 y=28 a=16 y=20 a=18 y=24 C a=12 y=12 D a=12 y=12 a=14 y=26 a=14 y=44 int a, y ;a=10 ; y=0 ;do a+=2 ; y+=a ;printf"a=%d y=%dn",a,y;ify>20 break ; whilea=14 ;名师归纳总结 - - - - - - -第 11 页,共 18 页精选学习资料 - - - - - - - - - 8、有如下程序main0 int i,sum ;fori=1 ;i<=3 ;sum+sum+=i;printf“ %d n” ,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 9876 11、有以下程序段int k=0 whilek=1k+; B 有语法错,不能执行 D 执行 1 次while 循环执行的次数是();A 无限次 C 一次也不执行12 、有以下程序段int x=3 do printf“ %d” ,x-=2 ; while .-x ;其输出结果是();A 1 B 3 0 C 1 -2 D 死循环13 、t 为 int 类型,进人下面的循环之前,t 的值为 0 while t=l B循环掌握表达式的值为1 就以下表达中正确选项();A 循环掌握表达式的值为0 C 循环掌握表达式不合法D以上说法都不对14 、以下程序的输出结果是();main int num= 0 ;whilenum<=2 名师归纳总结 num+ ; printf“ %d n” ,num;第 12 页,共 18 页- - - - - - -精选学习资料 - - - - - - - - - A 1 B 1 C1 D l 2 2 2 3 3 4 15 、以下程序的输出结果是();main int a, b ;fora=1, b=1 ; a<=100 ; a+ ifb>=10 break;if b%3= =1 b+=3 ; continue ; printf“ %d n” ,a;C 5 D 4 B 6 A 101 16 、以下程序中,while 循环的循环次数是();main int i=0 ;whilei<10 ifi<1 continue;ifi=5 break ;i+ ; A 1 . B 10 C 6 D 死循环,不能确定17 、以下程序的输出结果是();main int a=0,i ;fori= ;i<5 ;i+ switchi case 0: case 3:a+=2 ;case 1: case 2:a+=3 ;A 31 default:a+=5 ;C 10 D 20 printf"%dn",a; B 13 18 、以下程序的输出结果是();#include <stdio.h> main int i=0,a=0 ;whilei<20 名师归纳总结 for ; 第 13 页,共 18 页 ifi%10=0 break;else i-; - - - - - - -精选学习资料 - - - - - - - - - i+=11 ; a+=i ;printh"%dn",a; A 21 B 32 C 33 D 11 19 、以下程序的功能是:按次序读入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” ,&score; sum+=score ; ave=sum/4.0 ; printf“ NO%d:%f n” ,n,ave; 上述程序运行后结果不正确,调试中发觉有一条语句显现在程序中的位置不正确;这条语句是();A sum=0.0 ;B sum+=score;“ NO%d:%f n” ,n,ave;C ave=sun/4.0 ;D printf20 、有以下程序段int n=0,p ;doscanf“ %d” ,&p;n+ ; whilep.=12345&& n<3此处 do while 循环的终止条件是();A P 的值不等于 12345 并且 n 的值小于 3 B P 的值等于 12345 并且 n 的值大于等于 3 C P 的值不等于 12345 或者 n 的值小于 3 D P 的值等于 12345 或者 n 的值大于等于 3 21 、有以下程序 main int i;fori=0 ;i<3 ;i+ switchi 1: printf"%d",i ; case case 2: printf"%d",i ;default: printf"%d",i ; 执行后输出结果是();A 011122 B 012 C 012022 D 120 22 、有以下程序 main int do i=0,s=0 ;ifi%2i+ ; continue ; i+ ;名师归纳总结 - - - - - - -第 14 页,共 18 页精选学习资料 - - - - - - - - - s +=i ;whilei<7 ;printf"%dn",s; 执行后输出结果是();A 16 B 12 C 28 D 21 23 、有以下程序 main int s=0,a=1,n ;scanf"%d",&n do ; s+=1 ; a=a-2 ; whilea.=n ;printf"%dn",s; 如要使程序的输出值为 2,就应当从键盘给 n 输入的值是();A -1 B -3 C-5 D 0 24 、如有如下程序段,其中 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,1 B 2,2 s C 3,3 D 4,4 111.126 、要求以下程序的功能是运算:2