教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> 高中教育> 学科竞赛> NOIP名校讲义

NOIP名校讲义

上传者:胡超群
|
上传时间:2015-04-15
|
次下载

NOIP名校讲义

NOIP学习秘籍

程序设计资料(一)

数据类型:定义运算符函数

整型数:integer

运算: + - * div 整除 mod 求余

函数: abs sqr pred求前导 succ求后继 odd 奇函数 chr 取字符

前导和后继:对于有序数(整数、字符以及用户自定义的一些变量)而言,一个字符(数字)前面一个叫做它的前导,后一个叫后继。如pred(-6)=-7 succ(-6)=-5

odd 用来判断一个数是否为奇数,odd(7)=true odd(6)=false chr 取字符,将自变量(整数值)作为字符的序号(称字符的ASCII码),并将与此序号对应的字符作为函数的结果,如A的ASCII为65,则chr(65)='A',

背景知识:鉴于信息交换的重要及为统一文字符号的编码标准,让不同厂牌机型的计算机皆能使用同一套标准化的信息交换码,于是美国国家标准局特别制定了ASCII码(America Standard Code for Information Interchange,美国信息交换标准码),作为数据传输的标准码。早期使用7 个位来表示英文字母、数字0~9及其它符号,现在则使用8个位,共可表示256个不同的文字与符号,为目前各计算机系统中使用最普遍也最广泛的英文标准码,相对于ASCII code,中文系统使用最广泛的内码则为Big-5码。

实型数与整型数的主要差别是,实数可能有误差,如10个0。1相加,不一定能得到准确的1.0,因为在二进制系统中,十进制 0.1不能用二进制数准确表示。所以要准确控制重复次数时,不能用实数,只能用整数。

实型数:real

运算: + - * /

函数:abs 绝对值 sqr 平方 sqrt 开平方 sin同数学 cos 同数学 arctan 反正切exp(以e为底的指数)

ln 自然对数 trunc 取整 round 舍入取整 例:xy怎么表示?exp(y*ln(x))

注意 trunc 与round的区别,trunc纯粹把一个数的小数点部分去掉,round 对一个带小数点的数进行四舍五入运算,即到得最接近它的整数

trunc(1.2)=1 trunc(1.7)=1 trunc(-3.7)=-3 round(1.2)=1 round(1.7)=2 round(-3.7)=-4 字符型 char

函数:ord pred succ

ord 求对应的字符ASCII码,如ord('A')=65 chr 与ord为互逆函数 布尔型:boolean

标准函数:ord pred succ

ord(false)=0,ord(true)=-1(或1,视系统而定)先假后真,pred(true)=false 布尔运算(逻辑运算,运算结果为布尔型) and or not 运算规则如后表:

布尔运算优先规则:

( ) not and or 布尔变量可进行关系运算:<<= = >>= <> ,关系运算可用用整数、实数、字符型数、布尔型时,结果均为布尔型,通常要求关系运算两端的量为同一类型,但整数和实数可以混用。

顺序结构

有三个小朋友甲乙丙。甲有50粒糖果,乙有43粒糖果,两有13粒糖果。现在他们做一个游戏。从甲开始,将自己的糖分三份,自己留一份,其余两份分别给乙与丙,多余的糖果自己吃掉,然后乙与丙也依次这样做。问最后甲、乙、丙三人各有书多少粒糖果?

program ex2; var A,B,C:integer;

begin A:=50;B:=43;C:=13; {初始时每个小朋友所拥有的糖果数}

A:=A div 3; B:=B+A;C:=C+A;{甲小朋友分糖果后,每个人拥有的糖果数变化情况}

B:=B div 3; A:=A+B;C:=C+B; {乙小朋友分糖果后,每个人拥有的糖果数变化情况}

C:=C div 3; A:=A+C;B:=B+C; {丙小朋友分糖果后,每个人拥有的糖果数变化情况}

writeln('A=',A,'B=',B,'C=',C); {输出结果}

readln;

end. 巩固习题:

1、 有一个牧场,牧场上牧草每天都在均匀生长,这片草可供15头牛吃20天,或者供20头牛吃10天,问:这片牧场每天新生的草量可供多少头吃一天?

2、 数学上有一个经典的"鸡兔同笼"问题,已知笼中的鸡共30个,脚共90只,问鸡和兔各有多少? 3、 某班有男生x 位,女生 y 位, x位男生的数学平均成绩为87分, y位女生的数学平均成绩为85分,问全体学生的数学平均成绩为多少分?

4、 歌手大奖赛上6位评委给一名参赛者打分,6人打分的平均分位9.6分,如果去掉一个最高分,这名参赛者的平均分位9.4分,如果去掉一个最低分,这名参赛者的平均分为9.8分,那么去掉一个最高分和一个最低分,这名参赛者的平均分为多少?

5、 输入一个三位数,将其百位和个位对调,输出其对调后的数 选择结构

If then If then else 超市里卖电池,每个电池2元钱,若数量超过10个,则可打7.5折,输入购买电池个数,求出所需要的钱数。

Program ex4_3;

Var Num:integer;Price,Total:real; Begin

NOIP学习秘籍

If Num>10 then Price:=Price*0.75;

Total:=Num*Price;

Writeln('Total=',Total:0:2);

Readln;

End.

输入学生的成绩,根据其成绩的好坏输出相应的评语:90分以上,输出评语:优秀(outstanding),60~90分, 输出评语:良好(satisfactory),不足60分,输出评语:不及格(unsatisfactory).

参考源程序:(重点:if 结构)

program prosorce(input,output); var score:real; begin read(score); writeln('score=',score:8:2); if score>=90 then writeln('outstanding') else if score>=60 then writeln('satisfactory') else writeln('unsatisfactory') end. 初学者建议掌握多条件,如上例可写为:

if s>=90 then if (s>=60 ) and (s<=90) then if s<60 then 巩固练习:

输入a.b.c求一元二次方程的根。

rogram fomulor(input,output); var a,b,c,x1,x2,delta:real; begin writeln('please input a,b and c:'); readln(a,b,c); delta:=b*b-4*a*c; if a=0 then if b=0 then if c=0 then writeln('x=R') else writeln('No Answer!') else writeln('x=',-c/b:8:3) else if delta=0 then writeln('x=-b/(2*a)') else if delta>0 then begin x1:=(-b+sqrt(b*b-4*a*c))/(2*a); x2:=(-b+sqrt(b*b+4*a*c))/(2*a); writeln('x1=',x1:8:3,' x2=',x2:8:3); end else writeln('No Answer!'); end. 测试你的体形是否标准:

问题要求:首先要求输入你的体重(单位:kg)和身高(单位:cm),然后程序给出你的体形情况:

体形参数p=体重除以身高的三次方*1000,以下为不同参数值的体情况情况:

p<1.00 体形太瘦 thin 1.00<=p<1.15 有点瘦 little thin 1.15<=p<1.45 标准 standard 1.45<=p<1.60 有点胖 littel fat p>=1.60 太胖 too fat 输入一个小写英文字母,将其转换成大写字母并且输出,如输入为其他字符,则原样输出。

输入a

输出 A

提示:

var sh,chLchar; i:integer; begin readln(ch); i:=ord(ch); if (i>96) and (i<i<123) then sh:=chr(i-32) else sh:=ch; writeln(sh); for 循环

NOIP学习秘籍

begin

for i:=1 to 100 do

if i mod 2=0 then write(i:5);

end.

编程计算S=1+2+3+...+100。

[分析] 这是求1-100的连续自然数之和,有固定的循环次数。设i为循环控制变量,累加的和放在sum中。算法很简单,就是让计算机做100次加法运算,参考程序如下:

program lx_1; var sum,i:integer; begin sum:=0; for i:=1 to 100 do sum:=sum+i; writeln('total:',sum); end. 运行结果:5050

只要对程序稍加修改就可以计算出以下算式的值:

S=1+1/2+1/3+...+1/100 S=12+22+32+...+1002 S=2+4+6+...+100,等等。 .键入一个自然数,求这个自然数的所有约数之和。 参考程序:

program p4(input,output); 初始化;循环;筛选;处理 var x,y,s:integer; begin writeln('x=');read(x); s:=0; for y:=1 to x do if x mod y=0 then s:=s+y; writeln(s); end. 编程找出四位整数abcd中满足下述关系的数:

(ab+cd)(ab+cd)=abcd

解法一参考程序略(四重循环)

解法二:数位分离

program p4; var i,m,n,k:integer; begin for i:=1000 to 9999 do begin m:=i div 100; n:=i-m*100; k:=(m+n)*(m+n); if k=i then writeln (i); end; end. 输入30个学生的成绩,分别统计成绩在85~100、60~85、60分以下各分数段的人数。

参考程序:(用下题方法做?)

program count(input,output);数据类型;初始化;循环;读数处理; var score:real; num1,num2,num3,i:integer; begin num1:=0; num2:=0; num3:=0; for i:=1 to 30 do begin read(score); write(score); if i mod 5 = 0 then writeln; if score>=85 then num1:=num1+1 else if score>=60 then num2:=num2+1 else num3:=num3+1 end; write('85---100: ',num1,' 60---85: ',num2,' 0---60: ',num3) end.

NOIP学习秘籍

program maxmin(input,output); var x,max,min:real; i:integer; begin read(x); write(x:8:2); max:=x; min:=x; for i:=2 to 20 do begin read(x); write(x:8:2); if i mod 5 =0 then writeln; if x>max 此组语句可直接写为 if x>max then max:=x; if x<min then min:=x then max:=x else if x<min then min:=x end; writeln('max=',max:8:2,'min=',min:8:2) end. 求1!+2!+ +10!的值。

分析:这个问题是求10自然数的阶乘之和,可以用for 循环来实现。程序结构如下:

for n:=1 to 10 do

begin

①N!的值-->t

②累加N!的值-->t

end

显然,通过10次的循环可求出1!,2! ,10!,并同时累加起来, 可求得S的值。而求T=N!,又可以用一个for循环来实现: t=1;

for j:=1 to n do

t:=t*j;

因此,整个程序为:

program ex4_5;

var t,s:real;

i,j,n:integer;

begin

S:=0;

for n:=1 to 10 do

begin

t:=1;

for j:=1 to n do

t:=t*j;

S:=S+t;

end;

writeln('s=',s:0:0);

end. 一个炊事员上街采购,用500元钱买了90只鸡, 其中母鸡一只15元,公鸡一只10元,小鸡一只5元,正好把钱买完。问母鸡、公鸡、小鸡各买多少只?

分析:设母鸡I只,公鸡J只,则小鸡为90-I-J只,则15*I+ 10* J+(90-I-J)*5=500,显然一个方程求两个未知数是不能直接求解。必须组合出所有可能的i,j值,看是否满足条件。这里I的值可以是0到33,J的值可以0到50。

源程序如下:(可先讲用三重循环范围1~500 再讲三重循环 1~5....最后讲下面的程序)

programr ex4_6; 考虑无解时的输出!

var i,j,k:integer;

begin

for i:=1 to 5 do

for j:=1 to 8 do

begin

k:=90-i-j;

if 15*i+10*j+5*k=500 then writeln(i:5,j:5,k:5);

end;

end.

求3位水仙花数。n位整数的各个数字的n次方的和等于这个数,则这个数叫做水仙花数,如153=13+53+33,则153为3位水仙花数。

解法一:三重循(充分利用计算机的高速计算的特点,计算机,聪明的笨蛋!)

参考程序:(其实不用写)

program xx; var a,b,c:integer; begin for a:=1 to 9 do for b:=0 to 9 do for c:=0 to 9 do if a*a*a+b*b*b+c*c*c=a*100+b*10+c then

NOIP学习秘籍

readln end. 解法二:(分离数位,算法不好,换一种方法,当然本题没有必要用更复杂的算法)

参考程序:

program xx; var m,a,b,c:integer; begin for m:=100 to 999 do begin a:=m div 100; b:=(m mod 100) div 10; c:=m-a*100-b*10; if a*a*a+b*b*b+c*c*c=m then write(m:6); end; readln; readln end. 输出由“#”组成倒三角形图案,共6行,第一行11个“#”,第二行9个“#”,.....

注意图案类输出题目的做法,空格的控制,符号的输出以及换行。补充几个练习

参考程序:program p4;

var i,j,k:integer; begin for i:=6 downto 1 do begin write(' ':7-i); for k:=2*i-1 downto 1 do write('#'); writeln; end; readln; end. Nocomachna定理。任何一个正整数n3一定可以表示成n个连续的奇数和。 输入n(n<=100)。输出n3对应的表达式。

题解:设表达式中的最小奇数为x,当n=1时,最小奇数x=1;当n=2时,最小奇数x=3,2个奇数;当n=3时,最小奇数x=7,3个奇数;......当n=k时,最小奇数x前已有1+2+3....k-1个奇数,第k个奇数为x=k*(k-1)/2*2+1=k(k-1)+1=n(n-1)+1由此得出参考程序:

program ex; var i,n,a:integer; begin readln(n); a:=(n*(n-1))+1; for i:=1 to n-1 do begin write(a,'+');a:=a+2; end; writeln(a); readln end. While repeat 循环 求恰好使s=1+1/2+1/3+ +1/n的值大于10时n的值。

分析:"恰好使s的值大于10"意思是当表达式s的前n-1项的和小于或等于10,而加上了第n项后s的值大于10。从数学角度,我们很难计算这个n的值。故从第一项开始,当s的值小于或等于10时,就继续将下一项值累加起来。当s的值超过10时,最后一项的项数即为要求的n。

程序如下:

var

s : real;

n : integer;{n表示项数}

begin

s:=0.0;n:=0;

while s<=10 do{当s的值还未超过10时}

begin

n:=n+1;{项数加1}

s:=s+1/n;{将下一项值累加到s}

end;

writlen('n=',n);{输出结果}

end. 求两个正整数m和n的最大公约数。

分析:求两个正整数的最大公约数采用的辗转相除法求解。以下是辗转的算法:

分别用m,n,r表示被除数、除数、余数。 ①求m/n的余数r.

②若r=0,则n为最大公约数.若r≠0,执行第③步.

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

下载文档

热门试卷

2016年四川省内江市中考化学试卷
广西钦州市高新区2017届高三11月月考政治试卷
浙江省湖州市2016-2017学年高一上学期期中考试政治试卷
浙江省湖州市2016-2017学年高二上学期期中考试政治试卷
辽宁省铁岭市协作体2017届高三上学期第三次联考政治试卷
广西钦州市钦州港区2016-2017学年高二11月月考政治试卷
广西钦州市钦州港区2017届高三11月月考政治试卷
广西钦州市钦州港区2016-2017学年高一11月月考政治试卷
广西钦州市高新区2016-2017学年高二11月月考政治试卷
广西钦州市高新区2016-2017学年高一11月月考政治试卷
山东省滨州市三校2017届第一学期阶段测试初三英语试题
四川省成都七中2017届高三一诊模拟考试文科综合试卷
2017届普通高等学校招生全国统一考试模拟试题(附答案)
重庆市永川中学高2017级上期12月月考语文试题
江西宜春三中2017届高三第一学期第二次月考文科综合试题
内蒙古赤峰二中2017届高三上学期第三次月考英语试题
2017年六年级(上)数学期末考试卷
2017人教版小学英语三年级上期末笔试题
江苏省常州西藏民族中学2016-2017学年九年级思想品德第一学期第二次阶段测试试卷
重庆市九龙坡区七校2016-2017学年上期八年级素质测查(二)语文学科试题卷
江苏省无锡市钱桥中学2016年12月八年级语文阶段性测试卷
江苏省无锡市钱桥中学2016-2017学年七年级英语12月阶段检测试卷
山东省邹城市第八中学2016-2017学年八年级12月物理第4章试题(无答案)
【人教版】河北省2015-2016学年度九年级上期末语文试题卷(附答案)
四川省简阳市阳安中学2016年12月高二月考英语试卷
四川省成都龙泉中学高三上学期2016年12月月考试题文科综合能力测试
安徽省滁州中学2016—2017学年度第一学期12月月考​高三英语试卷
山东省武城县第二中学2016.12高一年级上学期第二次月考历史试题(必修一第四、五单元)
福建省四地六校联考2016-2017学年上学期第三次月考高三化学试卷
甘肃省武威第二十三中学2016—2017学年度八年级第一学期12月月考生物试卷

网友关注

P020120630404759372820
关于体育文化节目选拔彩排的通知
“爱在运新 健康随行”运新社区公益体检活动顺利进行(运新社区)
致家长的一封信及回执单(森林防火)
预防职业病的通知(隧道施工)
学生因病缺勤病因追查登记制度 Microsoft Word 文档
嘉祥县老僧堂镇中心小学:以家访促家教 用耐心换诚心
篮球赛通讯稿
仪容仪表检查的通知
运动会讲话
佛山市禅城区公共租赁住房管理实施细则
2015山西三支一扶综合备考:公共基础知识之写公文时刻注意身份
发改价格[2015]904号《关于印发推进药品价格改革意见的通知》(全文)
2007年中国大学毕业生薪水排行榜
爱我阎良七彩翔航 空魅力行
环发[2013]85号 环境保护部关于印发《突发环境事件应急处置阶段污染损害评估工作程序规定》的通知
质检总局关于印发
校训内涵
2014年全国大学生数学建模竞赛A题
在全省信访系统新任局长培训班开班式上的讲话
关于民族团结的一点浅说
期中考试分析
首次股东会决议
关于加强我市专业技术人员继续教育学时管理的通知
快乐生日祝福X
关于规范校园及周边电信业务营销行为的通知
国发〔2013〕38号《国务院关于印发中国(上海)自由贸易试验区总体方案的通知》
我们该如何去做
学发[2015]4号电子版:关于举办我院2015年“资助育人 励志成才”征文比赛的通知

网友关注视频

沪教版八年级下册数学练习册21.3(2)分式方程P15
【部编】人教版语文七年级下册《过松源晨炊漆公店(其五)》优质课教学视频+PPT课件+教案,辽宁省
二年级下册数学第三课 搭一搭⚖⚖
沪教版牛津小学英语(深圳用) 四年级下册 Unit 2
每天日常投篮练习第一天森哥打卡上脚 Nike PG 2 如何调整运球跳投手感?
【部编】人教版语文七年级下册《老山界》优质课教学视频+PPT课件+教案,安徽省
苏教版二年级下册数学《认识东、南、西、北》
沪教版八年级下册数学练习册20.4(2)一次函数的应用2P8
小学英语单词
冀教版小学英语四年级下册Lesson2授课视频
【获奖】科粤版初三九年级化学下册第七章7.3浓稀的表示
19 爱护鸟类_第一课时(二等奖)(桂美版二年级下册)_T3763925
第12章 圆锥曲线_12.7 抛物线的标准方程_第一课时(特等奖)(沪教版高二下册)_T274713
二年级下册数学第一课
化学九年级下册全册同步 人教版 第18集 常见的酸和碱(二)
沪教版牛津小学英语(深圳用) 五年级下册 Unit 7
青岛版教材五年级下册第四单元(走进军营——方向与位置)用数对确定位置(一等奖)
沪教版八年级下册数学练习册21.4(1)无理方程P18
外研版英语七年级下册module3 unit2第一课时
二次函数求实际问题中的最值_第一课时(特等奖)(冀教版九年级下册)_T144339
冀教版英语五年级下册第二课课程解读
沪教版牛津小学英语(深圳用) 四年级下册 Unit 7
苏科版数学 八年级下册 第八章第二节 可能性的大小
第五单元 民族艺术的瑰宝_16. 形形色色的民族乐器_第一课时(岭南版六年级上册)_T3751175
外研版英语三起5年级下册(14版)Module3 Unit1
北师大版数学四年级下册3.4包装
苏科版八年级数学下册7.2《统计图的选用》
精品·同步课程 历史 八年级 上册 第15集 近代科学技术与思想文化
19 爱护鸟类_第一课时(二等奖)(桂美版二年级下册)_T502436
二年级下册数学第二课