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
- 二年级下册数学第二课
精品推荐
- 2016-2017学年高一语文人教版必修一+模块学业水平检测试题(含答案)
- 广西钦州市高新区2017届高三11月月考政治试卷
- 浙江省湖州市2016-2017学年高一上学期期中考试政治试卷
- 浙江省湖州市2016-2017学年高二上学期期中考试政治试卷
- 辽宁省铁岭市协作体2017届高三上学期第三次联考政治试卷
- 广西钦州市钦州港区2016-2017学年高二11月月考政治试卷
- 广西钦州市钦州港区2017届高三11月月考政治试卷
- 广西钦州市钦州港区2016-2017学年高一11月月考政治试卷
- 广西钦州市高新区2016-2017学年高二11月月考政治试卷
- 广西钦州市高新区2016-2017学年高一11月月考政治试卷
分类导航
- 互联网
- 电脑基础知识
- 计算机软件及应用
- 计算机硬件及网络
- 计算机应用/办公自动化
- .NET
- 数据结构与算法
- Java
- SEO
- C/C++资料
- linux/Unix相关
- 手机开发
- UML理论/建模
- 并行计算/云计算
- 嵌入式开发
- windows相关
- 软件工程
- 管理信息系统
- 开发文档
- 图形图像
- 网络与通信
- 网络信息安全
- 电子支付
- Labview
- matlab
- 网络资源
- Python
- Delphi/Perl
- 评测
- Flash/Flex
- CSS/Script
- 计算机原理
- PHP资料
- 数据挖掘与模式识别
- Web服务
- 数据库
- Visual Basic
- 电子商务
- 服务器
- 搜索引擎优化
- 存储
- 架构
- 行业软件
- 人工智能
- 计算机辅助设计
- 多媒体
- 软件测试
- 计算机硬件与维护
- 网站策划/UE
- 网页设计/UI
- 网吧管理