《for循环语句练习题讲解及其它循环结构).ppt》由会员分享,可在线阅读,更多相关《for循环语句练习题讲解及其它循环结构).ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、程序如下:程序如下:Program Ex1_4VarI,S:integer;Begin i:=2;For i:=0 to 100 do begin s:=0;S:=S+i;end;Writeln(1+2+3+,n,=,s);End.一、一、一、一、forfor语句的一般格式语句的一般格式语句的一般格式语句的一般格式 for:=to do;for:=downto do;运行调试如下程序,观察现象。运行调试如下程序,观察现象。Program Ex1_4Vari,S:integer;Begin s:=0;For i:=0 to 100 do begin i:=i+1;S:=S+i;end;Write
2、ln(1+2+3+,n,=,s);End.练习练习:1.计算并输出计算并输出1*3*5*7*(2N-1)的积的积.(n10)2.计算计算s=1*2+3*4+5*6+7*8+(2N-1)*2n的积的积.(n1000)练习练习:1.计算并输出计算并输出1*3*5*7*(2N-1)的积的积.2.计算计算s=1*2+3*4+5*6+7*8+(2N-1)*2n的积的积.练习练习1:一个两位数:一个两位数x,将它的个位数和,将它的个位数和十位数对换得到另一个数十位数对换得到另一个数y,此时此时Y恰好比恰好比X大大36,编程求出所有这样的两位数。,编程求出所有这样的两位数。分析分析练习练习2:输入一个自然数
3、,求该自然数:输入一个自然数,求该自然数所有约数之和。所有约数之和。分析分析输入输入X-找出找出X的所有约数(从的所有约数(从1到到X逐个判断,逐个判断,看看XMODY是否为是否为0),并且累加起来保存在),并且累加起来保存在S中中-输出输出S即可即可练习练习3:把整数把整数3025从中剪开分为从中剪开分为30和和25两个数,两个数,此时再将这两数之和平方,(此时再将这两数之和平方,(30+25)2=3025计算结果又等于原数,求所有符合这样条件的四计算结果又等于原数,求所有符合这样条件的四位数。位数。n一、WHILE循环对于对于for循环有时也称为计数循环,当循环次数循环有时也称为计数循环,
4、当循环次数未知,只能根据某一条件来决定是否进行循未知,只能根据某一条件来决定是否进行循环时,用环时,用while语句或语句或repeat语句实现循环要语句实现循环要更方便。更方便。while语句的形式为:语句的形式为:whiledo;其意义为:当布尔表达式的值为其意义为:当布尔表达式的值为true时,执行时,执行do后面的语句。后面的语句。WHILE循环与循环与REPEATUNTIL循环循环 nwhile语句的执行过程为:语句的执行过程为:判断布尔表达式的值判断布尔表达式的值,如果其值为真如果其值为真,执行步执行步骤骤2,否则执行步骤否则执行步骤4;执行循环体语句执行循环体语句(do后面的语句
5、后面的语句);返回步骤返回步骤1;结束循环结束循环,执行执行while的下一个语句。的下一个语句。说明:这里说明:这里while和和do为保留字,为保留字,while语句的特语句的特点是先判断,后执行。点是先判断,后执行。当布尔表达式成立时,当布尔表达式成立时,重复执行重复执行do后面的语句后面的语句(循环体循环体)。n例例1、求恰好使、求恰好使s=1+1/2+1/3+1/n的值大于的值大于10时时n的值。的值。分析:分析:“恰好使恰好使s的值大于的值大于10”意思是当表达式意思是当表达式s的前的前n-1项的和小于或等于项的和小于或等于10,而加上了第,而加上了第n项后项后s的值大于的值大于1
6、0。从数学角度,我们很难。从数学角度,我们很难计算这个计算这个n的值。故从第一项开始,当的值。故从第一项开始,当s的值的值小于或等于小于或等于10时,就继续将下一项值累加起时,就继续将下一项值累加起来。当来。当s的值超过的值超过10时,最后一项的项数即为时,最后一项的项数即为要求的要求的n。programex;vars:real;n:integer;n表示项数表示项数begins:=0.0;n:=0;whiles=10do当当s的值还未超过的值还未超过10时时beginn:=n+1;项数加项数加1s:=s+1/n;将下一项值累加到将下一项值累加到send;writlen(n=,n);输出结果输
7、出结果end.二、直到循环(二、直到循环(REPEATuntil语句)语句)用用while语句可以实现语句可以实现“当型循环当型循环”,用,用repeat-until语句可以实现语句可以实现“直到型循环直到型循环”。repeat-until语句的含义是:语句的含义是:“重复执行循环,直到指定的条件为重复执行循环,直到指定的条件为真时为止真时为止”。直到循环语句的一般形式直到循环语句的一般形式:repeat;:;until;其中其中Repeat、until是是Pascal保留字,保留字,repeat与与until之间的所有语句称为循环体。之间的所有语句称为循环体。说明:说明:nrepeat语句的
8、特点是:先执行循环,后判语句的特点是:先执行循环,后判断结束条件,因而至少要执行一次循环体。断结束条件,因而至少要执行一次循环体。nrepeat-until是一个整体,它是一个(构是一个整体,它是一个(构造型)语句,不要误认为造型)语句,不要误认为repeat是一个语句,是一个语句,until是另一个语句。是另一个语句。nrepeat语句在布尔表达式的值为真时不再语句在布尔表达式的值为真时不再执行循环体,且循环体可以是若干个语句,执行循环体,且循环体可以是若干个语句,不需用不需用begin和和end把它们包起来,把它们包起来,repeat和和until已经起了已经起了begin和和end的作用
9、。的作用。while循环和循环和repeat循环是可以相互转化的。循环是可以相互转化的。例例2、求两个正整数、求两个正整数m和和n的最大公约数。的最大公约数。分析:求两个正整数的最大公约数采用的分析:求两个正整数的最大公约数采用的辗转相除法辗转相除法求解。以下是辗转的算法:求解。以下是辗转的算法:分别用分别用m,n,r表示被除数、除数、余数。表示被除数、除数、余数。求求m/n的余数的余数r.若若r=0,则则n为最大公约数为最大公约数.若若r0,执行第执行第步步.将将n的值放在的值放在m中中,将将r的值放在的值放在n中中.返回重新执行第返回重新执行第步。步。programex;varm,n,a,
10、b,r:integer;beginwrite(Inputm,n=);readln(m,n);a:=m;b:=n;repeatr:=amodb;a:=b;b:=r;untilr=0;writeln(Thegreatestcommondivideis,a);end.练习练习6:校体操队到操场集合,排成每行:校体操队到操场集合,排成每行2人,人,最后多出最后多出1人;排成每行人;排成每行3人,也多出人,也多出1人;人;分别按每行排分别按每行排4,5,6人,都多出人,都多出1人;当排人;当排成每行成每行7人时正好不多。求校体操队至少是多人时正好不多。求校体操队至少是多少人?少人?分析:分析:1、设体操
11、队为、设体操队为X人,根据题意应为人,根据题意应为7的倍数,的倍数,因此因此X的初值为的初值为7,以后用,以后用inc(x,7)改变改变X值;值;2、为了控制循环,用逻辑变量、为了控制循环,用逻辑变量yes为真(为真(true)使循环结束;使循环结束;3、如果诸条件中有一个不满足,、如果诸条件中有一个不满足,yes的值就会的值就会为假(为假(false),就继续循环。就继续循环。练习练习7:求求1992个个1992的乘积的末两位是多少?的乘积的末两位是多少?分析:分析:积的个位与十位数只与被乘数与乘数积的个位与十位数只与被乘数与乘数的个位与十位数有关,所以本题相当于求的个位与十位数有关,所以本
12、题相当于求1992个个92相乘,而且本次的乘积变为下一相乘,而且本次的乘积变为下一次相乘的被乘数,因此也只需取末两位参与次相乘的被乘数,因此也只需取末两位参与运算就可以了。运算就可以了。练习练习练习练习8 8、输入一整数、输入一整数、输入一整数、输入一整数A A,判断它是否质数。,判断它是否质数。,判断它是否质数。,判断它是否质数。练习练习练习练习9 9、求两个数的最小公倍数和最大公约数。、求两个数的最小公倍数和最大公约数。、求两个数的最小公倍数和最大公约数。、求两个数的最小公倍数和最大公约数。练习练习练习练习1010、编写一个译码程序,把一个英语句子译、编写一个译码程序,把一个英语句子译、编
13、写一个译码程序,把一个英语句子译、编写一个译码程序,把一个英语句子译成数字代码。译码规则是以数字成数字代码。译码规则是以数字成数字代码。译码规则是以数字成数字代码。译码规则是以数字1 1代替字母代替字母代替字母代替字母A A,数,数,数,数字字字字2 2代替字母代替字母代替字母代替字母B B,2626代替字母代替字母代替字母代替字母Z Z,如遇空格,如遇空格,如遇空格,如遇空格则打印一个星号则打印一个星号则打印一个星号则打印一个星号*,英文句子以,英文句子以,英文句子以,英文句子以.结束。结束。结束。结束。(提示:若从(提示:若从(提示:若从(提示:若从2 2到到到到A A的平方根的范围内,没
14、有一个的平方根的范围内,没有一个的平方根的范围内,没有一个的平方根的范围内,没有一个数能整除数能整除数能整除数能整除A A,则,则,则,则A A是质数。)是质数。)是质数。)是质数。)(提示:公约数一定小于等于两数中的小(提示:公约数一定小于等于两数中的小数,且能整除两数中的大数。公倍数一定数,且能整除两数中的大数。公倍数一定大于等于两数中的大数,且是大数的倍数,大于等于两数中的大数,且是大数的倍数,又能给两数中的小数整除。)又能给两数中的小数整除。)练习练习11.设设1小球从小球从200米高空自由落地,每次米高空自由落地,每次落地后反跳回原来高度的一半,然后再落下。落地后反跳回原来高度的一半
15、,然后再落下。编写一程序,求该球第十次落地时共经过了编写一程序,求该球第十次落地时共经过了多少路程?多少路程?练习练习12.求出求出1-1000中的所有完数(因子之中的所有完数(因子之和等于它本身的数。如:和等于它本身的数。如:28的因子是:的因子是:1,2,4,7,14,且,且1+2+4+7+14=28,所以,所以28是完数)。是完数)。练习练习13.找出找出1-9999中的所有史密斯数(可中的所有史密斯数(可以分解的整数,且所有数位上的数字和等于以分解的整数,且所有数位上的数字和等于其全部素数的数字总和。如:其全部素数的数字总和。如:9975就是史密就是史密斯数,因为:斯数,因为:9975
16、=3*5*5*7*9;9+9+7+5=30;1+3+5+5+7+19=30)。)。8 8。参考答案:。参考答案:var i,a:longint;var i,a:longint;f:boolean;f:boolean;begin begin readln(a);readln(a);f:=true;f:=true;for i:=2 to trunc(sqrt(a)do for i:=2 to trunc(sqrt(a)do if a mod i=0 then if a mod i=0 then begin f:=false;break;end;begin f:=false;break;end;if
17、 f then writeln(Yes,it is a prime.)if f then writeln(Yes,it is a prime.)else writeln(No,it is not a primr.);else writeln(No,it is not a primr.);end.end.9 9program ex11;program ex11;var i,j,s:integer;var i,j,s:integer;Begin Begin for i:=1 to 1000 do for i:=1 to 1000 do begin s:=0;begin s:=0;for j:=1
18、to(i div 2)do for j:=1 to(i div 2)do if i mod j=0 then s:=s+j;if i mod j=0 then s:=s+j;if s=i then write(i,);if s=i then write(i,);end;end;End.End.var a:array0.200 of integer;var a:array0.200 of integer;i,n,j,m,s1,s2:integer;i,n,j,m,s1,s2:integer;p:boolean;p:boolean;BeginBegin readln(n);/readln(n);/
19、生成质数生成质数 for i:=2 to 1000 do for i:=2 to 1000 do begin p:=true;begin p:=true;for j:=1 to a0 do for j:=1 to a0 do if i mod aj=0 then if i mod aj=0 then begin p:=false;break;end;begin p:=false;break;end;if p then begin a0:=a0+1;aa0:=i;end;if p then begin a0:=a0+1;aa0:=i;end;end;end;for i:=10 to n do for i:=10 to n do begin begin m:=i;m:=i;s1:=0;/s1:=0;/求质因数和求质因数和 for j:=1 to a0 do for j:=1 to a0 do if ajm then if aj0 do while m0 do begin s2:=s2+m mod 10;m:=m div 10;end;begin s2:=s2+m mod 10;m:=m div 10;end;if s1=s2 then write(i:4);/if s1=s2 then write(i:4);/符合条件输出符合条件输出 end;end;end.end.
限制150内