首页 信息学奥赛--程序的三种基本结构

信息学奥赛--程序的三种基本结构

举报
开通vip

信息学奥赛--程序的三种基本结构程序的三种基本结构一、顺序结构二、选择结构(if、case)三、循环结构(for、while、repeat)例:输入三角形的三条边a,b,c,输出三角形的面积。(a,b,c是正整数c)and(a+c>b)and(b+c>a)thenbeginp:=(a+b+c)/2;s:=sqrt(p*(p-a)*(p-b)*(p-c));writeln(s:0:2);endelsewriteln(‘Noanswer’);end.无“;”二、选择结构(一)关系运算、逻辑运算及布尔表达式1.关系运算符(表示数值大小关系的运算符号)运...

信息学奥赛--程序的三种基本结构
程序的三种基本结构一、顺序结构二、选择结构(if、case)三、循环结构(for、while、repeat)例:输入三角形的三条边a,b,c,输出三角形的面积。(a,b,c是正整数<100,满足三角形条件)一、顺序结构vara,b,c:integer;p,s:real;beginreadln(a,b,c);p:=(a+b+c)/2;s:=sqrt(p*(p-a)*(p-b)*(p-c));writeln(s:0:2);end.程序从第一句开始,依次顺序执行语句直到结束,中间无分支和循环,这种程序结构称为顺序结构Readln(a,b,c)读入边长求p求s输出面积s流程图改进:输入三角形的三条边a,b,c,如果能构成三角形则输出三角形的面积;如果不能构成三角形则输出”Noanswer”.Readln(a,b,c)读入边长A,b,c能否构成三角形?求p,s,输出面积输出:‘Noanswer’YESNOvara,b,c:integer;p,s:real;beginreadln(a,b,c);if(a+b>c)and(a+c>b)and(b+c>a)thenbeginp:=(a+b+c)/2;s:=sqrt(p*(p-a)*(p-b)*(p-c));writeln(s:0:2);endelsewriteln(‘Noanswer’);end.无“;”二、选择结构(一)关系运算、逻辑运算及布尔表达式1.关系运算符(表示数值大小关系的运算符号)运算符   运算        结果类型  =    等于         布尔型  <>   不等于        布尔型  <    小于         布尔型  >    大于         布尔型  <=   小于等于       布尔型  >=   大于等于       布尔型如:a:=1;b:=2;则表达式:a<=b的值是TRUE;a>b的值是FALSE;a+1=b的值是TRUE;Varf:boolean;f:=a>b;Write(f);输出:FALSE数据类型:布尔型(boolean)  一个布尔型数据用来存放逻辑值(布尔值)。布尔型的值只有两个:false(错误)和true(正确),并且false的序号是0,true的序号是1。false和true都是预定义常数标识符,分别表示逻辑假和逻辑真。并且true>false。boolean是布尔型的标识符。如:vara,b:boolean;2、逻辑运算(布尔运算) 运算符   运算    运算对象    结果类型  not   逻辑非(取反)  布尔型     布尔型  and  逻辑与(并且)  布尔型     布尔型  or   逻辑或(或者)  布尔型     布尔型  xor   逻辑异或   布尔型     布尔型如:a:=1;b:=2;c:=3;1)、Not(a>b)2)、(ac)4)、(ac)6)、(ac)布尔表达式:由关系运算符和逻辑运算符连接成的表达式。结果是布尔类型:TRUE或FALSEXor:异或其实就是对应的位,不同就取1,想同就取021二进制码:000101012二进制码:00000010xor:00010111(23)(二)、选择结构:if语句  有两种形式的IF语句: (1)if<布尔表达式>then<语句>; (2)if<布尔表达式>then<语句1>else <语句2>;IF语句是由一个布尔表达式和一个或两个供选择的操作序列组成。运行时根据布尔表达式的求值结果,选取其中之一的操作序列执行。  当布尔表达式的值为TRUE,则执行then后面的语句,值为FALSE时有两种情况:(1)什么也不做;(2)执行else后面的语句。注意:1、else前面的语句不能有分号;2:如果语句部分是复合语句(多于一条语句),则必须用begin与end括起来。例1:输入一个整数a,判断他的奇偶性。(是偶数输出“yes”,奇数输出“no”)。 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 一:Vara:integer;Beginreadln(a);Ifamod2=0thenwriteln(‘yes’);ifamod2<>0thenwriteln(‘no’);End.方法二:Vara:integer;Beginreadln(a);Ifamod2=0thenwriteln(‘yes’)elsewriteln(‘no’);End.无“;”例2、计算下列函数,输入x,输出y的值(精确到小数点后两位小数)。分析:根据输入的x值,先分成x<0与x>=0两种情况,然后对于情况x>=0,再区分x=0,还是x>0。varx:real;beginreadln(x);ifx<0thenwriteln(x*x:0:2)elseifx=0thenwriteln(0)elsewriteln(sqrt(x):0:2);end.IF语句的嵌套在if语句中,如果then子句或else子句仍是一个if语句,则称为if语句的嵌套。例3:已知方程:ax2+bx+c=0输入系数a,b,c,a<>0,输出方程的解(考虑各种情况)。保留两位小数。(1):如果无实数解输出:’noanswer’;(2):相同的实数解:输出一个即可。(3):两个不同的实数解:分别输出。如:输入:132输出:X1=-1.00X2=-2.00输入:21输出:X=-1.00vara,b,c:integer;d,x1,x2:real;beginreadln(a,b,c);d:=b*b-4*a*c;ifd<0thenwriteln('noanswer');ifd=0thenwriteln('x=',-b/(2*a):0:2);ifd>0thenbeginx1:=(-b+sqrt(d))/(2*a);x2:=(-b-sqrt(d))/(2*a);writeln('x1=',x1:0:2);writeln('x2=',x2:0:2);end;end.复合语句三、case语句:分情况语句(多分支语句)格式:case表达式of常数表1:语句1;常数表2:语句2;····常数表n:语句n;else语句n+1end;功能:执行过程说明:1)end与case对应2)表达式的类型通常是整型、字符型3)常量表是常量,其类型与表达式的类型要一致。常量表中的常量不能重复。输入两个数(均不为零)及一个算术运算符,输出其运算的结果程序代码:programex3(input,output);varx,y,s:real;ch:char;beginwriteln(‘inputx&y&ch:’);readln(x,y);readln(ch);casechof‘+’:s:=x+y;‘-‘:s:=x-y;‘*’:s:=x*y;‘/’:s:=x/yend;writeln(x,ch,y,’=’,s)end.引例:键入一个自然数N(<10000),求这个自然数的所有约数之和S(不包含1和n)。如:输入:6输出:5三、循环结构varn,i:integer;s:longint;beginreadln(n);s:=0;fori:=2ton-1doifnmodi=0thens:=s+i;writeln(s);end.循环结构程序通常由三种循环语句来实现。它们分别为1)、FOR循环2)、当循环while3)、直到repeat循环。一)、for语句1、for语句的一般格式:for<控制变量>:=<表达式1>to<表达式2>do<语句>;for<控制变量>:=<表达式1>downto<表达式2>do<语句>;其中for、to、downto和do是Pascal保留字。表达式1与表达式2的值也称为控制变量的初值和终值。例1:计算1+2+3+……+99+100vari,s:integer;begin  s:=0;  fori:=1to100dos:=s+i;    writeln(s);end.For语句执行过程①先将初值赋给左边的变量i(称为循环控制变量);②判断循环控制变量的值是否已“超过”终值,如已超过,则跳到步骤⑥;③如果末超过终值,则执行do后面的那个语句(称为循环体);④循环变量自动递增(对to)1;⑤返回步骤②;⑥循环结束,执行for循环下面的一个语句。循环体:重复执行初值i:循环控制变量终值1)、通常将一组重复执行的语句称为循环体,而控制重复执行或终止执行由重复终止条件决定。2)、重复语句是由循环体及重复终止条件两部分组成。说明:1)初值和终值可以是表达式,控制变量和初值、终值的类型相同,且必须是整型、布尔型和字符型等顺序类型,不能为实型。2)递增按succ函数规律变化,递减按pred函数规律变化,整型按数值大小变化,如果为字符型量,按ASCII码表的顺序计算。3)初值和终值在循环之前计算,重复过程中,其值不受影响;不得在循环语句中对控制变量进行赋值。4)当初值超过终值,不执行循环,循环次数为零。例2、求100---999中的水仙数。(若三位数abc,a3+b3+c3=abc,则称abc为水仙数。如153,13+53+33=1+125+27=153,则153称为水仙数)。varn,a,b,c:integer;beginforn:=100to999dobegina:=ndiv100;b:=(ndiv10)mod10;c:=nmod10;ifn=a*a*a+b*b*b+c*c*cthenwriteln(n);end;end.例3、从键盘上输入n个数,输出他们的最大数,最小数,平均数。输入:第一行:n(<100).第二行:n个正整数([1,1000]),中间一个空格隔开。输出:第一行:最大数。第二行:最小数。第三行:n个数的平均值(小数点后保留2位小数)。样例:输入:41042030输出:30416.00varn,i,x,min,max:integer;sum:longint;beginreadln(n);read(x);min:=x;max:=x;sum:=x;fori:=1ton-1dobeginread(x);sum:=sum+x;ifx>maxthenmax:=x;ifx107二)、While循环结构引例:求恰好使s=1+1/2+1/3+…+1/n的值大于10时n的值。vars:real;n:integer;{n分母}begins:=0;n:=0;whiles<=10do{当s的值还未超过10时}beginn:=n+1;{分母1}s:=s+1/n;{将下一项值累加到s}end;writeln(n);{输出结果}end.while循环当循环次数不能预先确定时,只能根据某一条件来决定是否进行循环时,用while语句实现。格式:while<布尔表达式>do<一条语句:循环体>;或:while<布尔表达式>dobegin<语句组:循环体>end;其意义为:当布尔表达式的值为true时,执行do后面的语句。循环体中必须有改变循环控制变量的语句,否则出现死循环。区别于for结构例1:求两个数a,b(<1000)的最小公倍数。样例:输入:30输出:60vara,b:integer;s:longint;beginreadln(a,b);s:=a;whilesmodb<>0dos:=s+a;writeln(s);end.最大公约数最小公倍数例2、输入n(<1015),求他的各位数字之和.如:输入:1234输出:10varn:int64;s,t:integer;beginreadln(n);s:=0;whilen<>0dobegint:=nmod10;s:=s+t;n:=ndiv10;end;writeln(s);end.Int64:[-9*1018,9*1018][-9223372036854775808,9223372036854775807]例3、输出1~100之间的奇数。程序代码:programex5(input,output);varx:integer;beginx:=1;whilex<100dobeginwrite(x:5);x:=x+2endend.三)repeat语句:(“直到型循环”)repeat语句:(“直到型循环”):反复执行循环体直到条件满足为止。格式:repeat语句1;语句2;语句3;···语句nuntil布尔表达式;功能:执行过程:先执行指定的语句序列,然后判别表达式。说明:while语句和repeat语句都可以实现循环结构,但它们有四点不同:【例6】:输入若干个字符,它的终止符是‘#’,计算输入的字符中‘a’(‘A’)出现的次数。算法分析:设计数器i,置初值为0;出入字符;当字符不为‘#’时循环:如果字符为‘a’或‘A’,则计数器加1;读入下一个字符;输出计数器的值,程序结束。While循环Repeat循环程序代码:programex6;varch:char;i:integer;begini:=0;read(ch);whilech<>’#’dobeginif(ch=’a’)or(ch=’A’)theni:=i+1;read(ch)end;writeln(‘i=’,i)end.programex7;varch:char;i:integer;begini:=0;repeatread(ch);if(ch=’a’)or(ch=’A’)theni:=i+1;untilch=’#’;writeln(‘i=’,i)end.四)多重循环【例9】:求100~999中的水仙花数。(若三位数abc,abc=a3+b3+c3,则称为水仙花数。如:153,13+53+33=1+125+27=153)算法设计:采用三重循环求解,用for循环。程序代码:programex9(input,output);vara,b,c:integer;beginfora:=1to9doforb:=0to9doforc:=0to9doifa*a*a+b*b*b+c*c*c=a*100+b*10+cthenwrite(a*100+b*10+c:6);writelnend.二、循环结构的综合练习1、陶陶摘苹果(NOIPp)(apple.pas/c/cpp)【问题描述】陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。【输入】第1行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。第2行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。【输出】输出包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。【样例输入】110100200150140129134167198200111【样例输出】5varh,x,sum,i:integer;beginsum:=0;readln(h);h:=h+30;fori:=1to10dobeginread(x);ifx<=htheninc(sum);end;writeln(sum);end.2、津津的储蓄计划(NOIP2004T)(save.pas/dpr/c/cpp)【问题描述】津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20%还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。津津发现这个储蓄计划的主要风险是,存在妈妈那里的钱在年末之前不能取出。有可能在某个月的月初,津津手中的钱加上这个月妈妈给的前,不够这个月的原定预算。如果出现这种情况,津津不得不在这个月省吃俭用,压缩预算。现在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20%还给津津之后,津津手中会有多少钱。【输入文件】输入包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。【输出文件】输出一行,这一行只包含一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。【样例输入1】29023028020030017034050908020060【样例输出1】-7【样例输入2】29023028020030017033050908020060【样例输出2】1580Constm=300;Varsave,left,x,i:integer;beginleft:=0;save:=0;fori:=1to12dobeginread(x);ifx>m+leftthenbeginwriteln(-i);exit;end;ifm+left-x>=100thenbeginsave:=save+100*((m+left-x)div100);left:=(m+left-x)mod100;endelseleft:=m+left-x;end;writeln(1.2*save+left:0:2);end.本讲结束!谢谢!
本文档为【信息学奥赛--程序的三种基本结构】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
hs154
hx主要从事图文设计、ppt制作,范文写作!
格式:ppt
大小:117KB
软件:PowerPoint
页数:0
分类:其他高等教育
上传时间:2021-10-12
浏览量:7