优学合肥奥数网讯:青少年信息学竞赛辅导资料Pascal语言:选择结构程序设计 选择结构程序设计 IF语句 条件语句用于响应一个条件的两个方面。 例如:今天如果下雨,我们就在家;否则(不下雨)我们就去旅游。 又如:如果已经搜索得到结果,就打印出答案;否则(还没得到结果)就继续搜索。 IF语句的一般格式是: IF条件 THEN语句1{条件为真时的响应、处理} ELSE语句2;{条件为假时的响应、处理} 使用条件语句时要注意: 1、条件语句是一个语句。IF、THEN、ELSE都是语句的一个部分。所以它只能有一个“;”作为分隔符,放在句子的结束,特别要注意不能放在ELSE之前。 2、如果我们的程序只需对条件为真的情况作出处理,不需要处理条件为假的情况,则IF语句省略ELSE分句,格式变成: IF条件 THEN语句1;{条件为真时的响应、处理} 如:如果数a大于等于0则输出它的平方根。 ifa>=0thenwriteln(sqrt(a)); 对以上的例子,条件为假时不需处理,于是我们干脆省去ELSE分句。 3、if语句可以多层嵌套。嵌套时为了避免误解,可以用begin,end括起嵌套部分;else分句一般和最近的if分句配套: IF条件 THENBEGIN if条件1then……else……; END ELSEBEGIN if条件2then……else……; end; 例1、输入两个数a,b,输出较大的数。 programtt; vara,b:integer; begin write('pleaseinputa,b:'); readln(a,b); ifa>bthenwriteln(a) elsewriteln(b); end. 下一页阅读:CASE语句 CASE语句 分情况语句适用于对一个条件的多种情况的响应。 格式: case表达式of 标号1:语句1; 标号2:语句2; …… 标号n:语句n; else语句n+1 end; case语句在使用时有几点要注意: 1.end与case对应;标号与语句之间用“:”分隔;else与语句之间不用分隔符。 2.标号必须是一常量,其类型与表达式的类型一致 例2:某全自动加油站a,b,c三种汽油的单价(元/kg)分别是1.50、1.35和1.18,也提供了“自己加”或“协助加”两个服务等级,这样用户可以得到5%或10%的优惠。编一个程序,用户输入加油量、汽油品种和服务类型(f-自动,m-自己,e-协助),然后计算应付款。 programpcase1; var oil,help:char; kg,total:real; begin write('Entertheamountinkilograms(kg):');readln(kg); write('Whichtypeofthegasoline(a,b,c):');readln(oil); wirte('Whichtypeforservice(f,m,e):');readln(help); caseoilof 'a':total:=1.50*kg; 'b':total:=1.35*kg; 'c':total:=1.18*kg; elsewriteln('InputError!') end; {——————处理汽油的类型} casehelpof 'f':; 'm':total:=total*(1-0.05); 'e':total:=total*(1-0.10); elsewriteln('InputError!') end; {——————处理服务类型} writeln; writeln('Totalis',total:10:2); end. 3.可以多个标号对应同一条语句 4.语句可以是多个语句,但必须用语句括号(begin……end)括起 5.case语句也可以嵌套 例3:从键盘上读入年和月,输出该月有多少天。 programpcase2; var year,month,day:integer; runnian:boolean; begin write('Enteryearandmonth:');readln(year,month); casemonthof 1,3,5,7,8,10,12:day:=31; 4,6,9,11:day:=30;{————以上处理31天和30天的情况} 2:begin runnian:=(yearmod400=0)or((yearmod4=0)and(yearmod100<>0)); caserunnianof true:day:=28; false:day:=29; end; end;{————以上处理2月的情况:闰年28天,平年29天} end; end. 下一页阅读:思考与练习 思考与练习: 1、从键盘上读入长方形的边长a,b,计算它的面积和周长,输出。 2、输入一个时、分、秒,把它转换为一个秒数。 3、从键盘读入一个数,判断它的正负。是正数,则输出"+",是负数,则输出"-"。 4、输入两个数a,b,输出较大数的平方值。 5、铁路托运行李规定:行李重不超过50公斤的,托运费按每公斤0.15元计费;如超50公斤,超过部分每公斤加收0.10元。编一程序完成自动计费工作。 6、某超市为了促销,规定:购物不足50元的按原价付款,超过50不足100的按九折付款,超过100元的,超过部分按八折付款。编一程序完成超市的自动计费的工作。 7、输入a,b,c三个不同的数,将它们按由小到大的顺序输出。13、当前小学生的成绩单由以前的百分制改为优秀、良好、合格、不合格四个等级的等级制。编一程序完成分数的自动转换工作。转换规则如下:60分以下的为不合格;60到69分为合格;70到89分为良好;90分以上的为优秀。(提示:可以利用DIV运算来使程序更简明) 8、打印某年某月有多少天。(提示:A、闰年的计算方法:年数能被4整除,并且不能被100整除;或者能被400整除的整数年份。B、利用MOD运算可以判断一个数能否被另一个数整除) 9、编程模拟剪刀、石头、布游戏:用S表示剪刀,用R表示石头,用P表示布。规则是:剪刀剪布,石头砸剪刀,布包石头。游戏者分别把自己的选择输入,计算机给出结果。 最新两期阅读:信息学竞赛辅导资料Pascal语言基础知识(一) 信息学竞赛Pascal语言顺序结构程序设计(二) 更多内容,请参加优学合肥奥数网“杯赛竞赛”频道。 》》“信息学竞赛”延伸阅读 青少年信息学竞赛语言教程一:简单程序 信息学编程语言教程二:顺序结构程序与基本数据类型 信息学奥赛语言教程PASCAL函数表 安徽省合肥市青少年信息学竞赛注意事项 |