信息学竞赛辅导习题集
习题一
  1.写出下列算术表达式的结果和数据类型:
  (1)50 DIV 6  (2)50 MOD 6
  (3)SQR(SQRT(9)) (4)ROUND(3.75)+TRUNC(3.75)
  (5)int(3.63)+frac(3.63) (6)(4-3)* 5*(7/2)
  2.指出下列程序的语法错误,并加以改正:
program shu1-shu2
var shuinteger;
BEGIN
write(shu1shu2=);READLN(shulshu2);
shu=shu1-shu2; 
WRITELN('shu'=;shu)
END
  3.编写一个程序,已知长方体的长、宽、高,求长方体的全面积和体积。
习题二
  1.开机引入DOS系统:
  2.插入TURBOPASCAL盘,引入PASCAL系统;
  3.观察屏幕顶行的显示(即主菜单)是:——
  4.要进入主菜单,应打——键;
  5.打ALT+E键进入编辑状态,并输入下列程序:
PROGRAM SHIXI1
VAR NAME:STRING
BEGIN
WRITE('A MORE OPEN CHINA AWAITS')
WRITELN('2000 OLYPICS')
END
  6.按ALT+F9键对上面程序进行编译
  7.按CTRL+F9键运行程序;
  8.如果要再看显示页,应按——键,请按这个键,把屏幕显示结果写出;
  9.在上面程序最后(END之前)增加语句READLN,然后再运行,结果与前面有什厶不同?
  10.选主菜单“FILE”项,再选其中“NEW”子项,按回车键,计算机有什么反应?——,因此NEW的作用是——
习题三
  1.编一程序,从键盘输入一个真分数的分子和分母,输出它的小数形式,精确到小数点后第20位。
  提示:如果我们用变量N表示分子,D表示分母,当从键盘输入这两个值后,程序应判断是否有N<D,如果不满足,应该返回要求重新输入,直到满足为止。如果用q表示两个正整数nd相除的整数商,r表示余数。则算法这样来设计:
  (1)n作为第1个余数:
  (2)r*10除以d,商为q,余数为r,输出q值:
  (3)如果r=0,表示已除尽,则结束程序运行;如果r>0,而商的数字*已到达20个也结束运行;否则返回(2),重复执行第2和第3的步骤。
  请画出流程(N-S)图并编写程序。
  2.古代百鸡问题。公鸡51只,母鸡31只,小鸡31元。现用100元买了100只鸡。编
程求公鸡,母鸡,小鸡各买了多少只?
  3.编一程序,从键盘输入若干个整数,以连续输入两个0作为结束标志。求出这些整数的和。
习题四
  1.编一程序,求0100以内的所有偶数之和。
  2.编一程序,显示如下n(n<10)行字符图形(指针拼音n=5为例)
  1
  12
  123
  1234
  12345
  3.编一程序求表达式:
  s=1/(1+2)+1/(1+2+3)++1/(1+2+3++n)的值。
  4.编一程序,从键盘读入n(n为奇数),显示如下字符图形(n=5为例)
  * * * * *
  * * *
    *
  * * *
  * * * * *
习题五
1.从键盘输入3个互不相同的数,输出居中那个数。程序如下,请画出相应的N-S图。
PROGRAM li4-1B{a<b<c}
VAR iINTEGER
  aarray[1..3] of REAL
  maxminsum:REAL
BEGIN
WRITE('abc=')READLN(a[1]a[2]a[3]);
max:=-1e38min:=1e38; sum:=0
FOR i:=1 to 3 do
BEGIN
  sum:=sum+a[i];
  IF max<a[i] THEN max;
  IF min>a[i] THEN min;
END
WRITELN('mid=',sum-max-min);
READLN
END
  2.用CASE语句编一程序,从键盘输入1—7之间的一个整数,输出相应的星期几的英语单词。其中1表示星期一,2表示星期二……,7表示星期日。1个星期7天的英语分别是:MondayTuesdayWednesdayThursdayFridaySaturdaySunday
  3.分别用IF语句和CASE编两个程序,从键盘输入两个数ab,再输入1个字符,根据字符是'+''-''*''/'来输出ab的和,差,积,商。显示格式如下
  ab=12 - 13
  yunsuanfu:-{运算符}
  a-b=25
  4.有8个球,其中有1个次品,外形相同,仅重量不同(可轻可重)。现在以天平为工具,用最少的次数挑出次品,并确定它是轻是重。编程模拟这一过程。程序先输入次品的编号及重量,再输入正品的重量。最后输出结果。显示格式如下:
  cipln hao7  {次品号}
  cipin zhong: 36  {次品重}
  zhengpinzhong40  {正品重}
  输出结果:
  cipin hao: 7
  cipin QING
  提示:可以用下面流程图表示的算法来设计程序:
b1+b2+b3 ? b4+b5+b6
>=<
b1+b4?b2+b5 b7?b8bl+b4?b2+b5
>=
<><>=<
b1?b263?b1b2?b1b7?b1b8?blbl?b2b1?b3
b2?b1
>==>>=>==>>=>=>=
是是是是是是是是是是是是是是是是
b1b5b6b3b2b4b7b8b7b8b2b4b3b6blb5
重轻轻重重轻重轻轻重轻重轻重轻重
习题六
  1.现有30名小朋友,编号分别为130号,顺序围坐一圈,然后从1号开始顺序14报数,逢4者离开坐位到圈外,问最后剩下的小朋友原来的位置编号是多少号?
  2.幼儿园教师把40块糖分给班上的25名小朋友,她让小朋友围坐一圈按125编号,然后从1号开始13报数,逢数到3的小朋友分得一块糖。问最后把糖分尽后,都有哪些小朋友还没得到糖,哪位小朋友得到的糖最多?
  3.班上N名同学排成一列,按1—N顺序编号。然后从队头开始12报数,数1的出列。剩下的同学再从队头开始12报数……直到剩下最后一名同学时,这名同学就幸运的作为全班的代表到电视台“七光”节目中当观众。问这名同学开始时应排在第几号?
  4.随机产生20个互不相等的小于100的正整数围成一圈,按顺序编号。求:
  (1)连续3个数之和的最大值是几?是哪3个数的和?
  (2)相隔的两个数之积的最小值是几?是哪2个数的积?
  打印出它们的算式。
  5N名小朋友围坐一圈(10N20),每人由教师分给250之间的偶数块糖,然后按下列规则调整:所有小朋友同时把自己手中糖的一半给坐在他左边的小朋友。如果这时他手中的糖为奇数块,则由教师给补一块,再如此分下去,直到他们手中糖块数相等为止。编程并打印每次分糖的结果。
  620名小朋友围坐一圈(L20编号),开始时每人从教师那里领8—40块是4的倍数的糖,然后按下面的方法同时分,自己留下一半,分别分给左右小朋友各l4。然后当手中的糖不足4的倍数时,再跟教师要几块糖补足。直到每人手中的糖数相同时为止。编程并打印每次分糖的结果。
  754张扑克牌排成1列,从头开始13报数,逢3取出,到最后1张后再往回数,如此往复后,剩下的最后1张牌,原来的位置是几?
  8.在新年联欢会上,全班40名同学每人准备1份礼物,并在礼物上贴上自己学号的标签。然后用l40号不同号码的纸条折好放在1个空盒里,每人抓1个。按所抓到的号码,并统计全班有几人正好拿到自己送的礼物。
习题七
  1.编一程序,统计从键盘输入的n个英语单词中以c开头的单词个数。
  2.从键盘输入一个自然数,用字符处理的方法把它的各个数字分离出来,求出它们的平方和。例如
  输入 n=324
  输出 29
  3.编一程序,在字符串'AbCDEFGH'中插入小写字母,要插入的字母和位置从键盘输入,然后把新字符串显示出来。例如
  输入zifu weizhi=a 5
  输出xinchuan=AbCDaEFGH
  4.从键盘输入两个字符串C1C2,编一程序出它们最长的公共子字符串。例如
  输入AbCDEFGXFGACDEFX
  输出CDEF
  5.试编一个程序,将键盘输入的英语单数名词变成复数形式输出。规则如下:
  (1)以辅音字母y结尾,则把y改成i,再加es
  (2)sxchsh结尾,则加es
  (3)以元音o结尾,则加es
  (4)其他情况直接加s
  6.用二维数组编程,打印出如下杨辉三角形:
  1
  1 2 1
  1 3 3 1
  1 4 6 4 1
习题八、用过程编程
  1.利用过程编一程序,求3个正整数abc的最小公倍数。
  2.编一程序,验证如下结论:两个正整数的最大公因数和最小公倍数的积,等于这两个数之积。显示格式如下:
  ab=36 42
  a* b=1512
  GCD* LCM=6*252=1512
  9*b=GCD*LCM
  3.编一程序,验证如下结论:如果两个正整数ab的最大公因数是1,则祢为ab互质。如果ab互质,一定能到两个整数mn,使得等式am+bn=1成立。显示格式如下:
  ab=16 35
  m=11 n=-5
  16*11+35*(-5)=1
习题九、用自定义函数编程
  1.编一程序,求10名运动员参加某项比赛,取前3(冠军,亚军和季军)的不同情况共有多少种?
  提示:从m个不同元素中,取出n个元素,按一定顺序排列,称为从m个不同元素中取出n个元素的排列。从m个元素中取出n个元素的所有排列种数称为排列数,用P(mn)表示,求排列数的公式为:
  P(m,n)=m!/(m-n)!
  2.编一个求组合数的通用程序,即求C(mn)的程序,其中mn从键盘输入。并用下面数据验证程序的正确性:C(2010)=184756C(309)=14307150
  3.编一程序,验证下面公式:
  (1)C(mn)=C(m-1n)+C(m-1n-1)
  (2)C(m1)+C(m2)++C(mm-1)+C(mm)=2^m-1
习题十