(信息学奥赛辅导)程序设计试题汇编(答案)

2019-02-15 11:14

师大附中 信息学奥林匹克竞赛辅导——程序设计试题答案部分 第1页

程序设计试题及答案

(备注:试题难度评价采取五★级评价体系,分基础、容易、一般、稍难、难五个等级,其中的一、二、三★级都属于程序设计的基础试题级别,同学们稍加思考均有能力求得正确解答,对于四★级试题属于程序设计试题基础级别的思考题,五★级难度试题在此没有涉及,在程序设计高级试题中另行讲解。对于基础和容易两个级别的程序设计试题,若能够给出语句分类(如If条件语句、条件语句嵌套、循环语句、多重循环语句等)的将尽量给出。若属于13大类别的将尽量标注。) 程序设计试题几大分类:

1、 素数类问题(求素数的几种算法): 2、 数据排序问题(数据排序的几种方法): 3、 最大公约数和最小公倍数问题(几种算法):

4、 公式求解类问题(如求圆周率π、自然常数e、解方程等等): 5、 编号相反处理问题:

6、 约瑟夫问题(或猴子选大王问题、密码问题): 7、 回文数问题: 8、 高精度数值计算问题: 9、 数值计算问题: 10、 11、 12、 13、

进制相互转换问题: 字符串倒置问题: 排列与组合类问题:

因子、质因子(质因数)类相关问题:

答案部分:

师大附中 信息学奥林匹克竞赛辅导——程序设计试题答案部分 第2页

(程序设计的源程序没有统一的标准答案,实现程序的算法也是多种多样,但结果是唯一的,算法也有优劣之分,一个程序的优劣,关键在于是否找到了好的算法,以下程序和算法不一定就是最佳算法和最佳程序,只能仅供参考,希望同学们能够对某些程序提出更好的算法来改进程序) (经常碰到的判断是否为素数、是否为回文数、求两个数的最大公约数、求两个数的最小公倍数等问题的子函数源程序,请务必记住!)

①判断是否为素数,若是素数则返回true,若不是素数则返回false:

function prime(x:longint):boolean; var

j,y:longint; begin prime:=true;

if x<2 then prime:=false; y:=trunc(sqrt(x)); for j:=2 to y do if (x mod j = 0) then

begin prime:=false; exit; end; end;

备注:1~100之间所有的素数:2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、

53、59、61、67、71、73、79、83、89、97。(共25个)

②判断是否为回文数,若是回文数则返回true,若不是回文数则返回false:

function huiwen(n:longint):boolean;

师大附中 信息学奥林匹克竞赛辅导——程序设计试题答案部分 第3页

var

m,i,j:longint;

a:array[1..10] of integer; begin

if n<0 then begin huiwen:=false; exit; end; m:=n; i:=0; huiwen:=true; repeat i:=i+1;

a[i]:=m mod 10; m:=m div 10; until m=0;

for j:=1 to (i div 2) do if a[j]<>a[i-j+1] then

begin huiwen:=false; exit; end; end;

③求最大公约数子函数,返回两个正整数的最大公约数,采用辗转相除法算法; function gcd(a,b:longint):longint; begin

if b=0 then gcd:=a else gcd:=gcd(b,a mod b); end;

师大附中 信息学奥林匹克竞赛辅导——程序设计试题答案部分 第4页

④求最小公倍数:lcm=a*b div gcd(a,b); (以下程序设计试题来自《奥赛经典(语言篇)》) 第2章

基本语句与程序结构

例题部分:

1、 求梯形的面积。(梯形面积公式:S?(★,测试数据①

2?b?b?4ac2、 求一元二次方程ax2+bx+C=0的两个实根。(求根公式:x1,2?)

2a1h(a?b)) 2(★,测试数据a=1,b=-5,c=6;答案:x1=2、x2=3)

3、 输入一个三位的自然数,然后把这个数的百位与个位对调,输出对调后的结果。 (★) 4、 输入三个数a、b、c,首先判断这三个数能否构成三角形,若能,则求出三角形的面积。

(提示:海伦公式S?d(d?a)(d?b)(d?c),其中d?a?b?c,a、b、c为边长) 2(★,If条件语句,测试数据a=5,b=6,c=7;答案:14.7)

5、 从键盘读入三个数,按从大到小的顺序把它们打印出来。(★,If条件语句) 6、 输入三角形的三边,判断它是否是直角三角形。

(★,If条件语句,测试数据①3、4、5;②4、5、6;答案①Yes;②No)

7、 编写一个根据用户键入的两个操作数和一个运算符,由计算机输出运算结果的程序。(★★★) 8、 输入一个年号,判断它是否为闰年。

(★,If条件语句,测试数据①1900;②2000;③2008;答案:①No;②Yes;③Yes) 9、 编程计算S=1+2+3+…+100。(★,循环语句, 答案:5050)

相关练习:(1)S?1?

111????; 23100(2)S?1?2???100;

(4)S?1?4?7?10???100;

222(3)S?2?4?6???100;

师大附中 信息学奥林匹克竞赛辅导——程序设计试题答案部分 第5页

(相关练习答案:(1)5.19(保留2为小数);(2)338350;(3)2550;(4)1717)

10、 根据公式

?26?1?111????,计算圆周率的π值。 2232n2(★★,循环语句,测试数据n=10000;答案:3.1414971639) program e;

var

i:longint; s:real; begin

writeln; s:=0;

for i:=1 to 10000 do s:=s+1/(i*i); writeln(sqrt(6*s)); end. 11、

计算n!。(n!=1×2×3×…×n,取n=10)

(★★,循环语句,10!=3628800) 12、

已知一对兔子,每个月可以生一对小兔,而小兔过一个月后也可生一对小兔。即兔子的

对数是:第一个月1对,第二个月2对,第三个月3对,第四个月5对,……,假设兔子的生育期是12个月,并且不死,问一年后,这对兔子有多少对活着的后代?(Fibonacci数列问题)

(★★,循环语句, 1、2、3、5、8、13、21、34、55、89、144、233;答案233) 13、

求两个整数a与b的最大公约数和最小公倍数。

(★,循环语句、If条件语句,测试数据16和24,最大公约数8,最小公倍数48) 14、

利用格利高公式求π。

?

111?1?????,直到最后一项的值小于10-6为止。 4357(答案:3.1415946569E+00)

(★★★,循环语句)

program e2_32;

var

n,fh:longint; s,t,p:real; begin

writeln; n:=1; s:=0; t:=1; fh:=1; while (abs(t)>=1e-6) do

begin t:=fh/n; s:=s+t; n:=n+2; fh:=-fh; end; p:=4*s;


(信息学奥赛辅导)程序设计试题汇编(答案).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:75t锅炉运行规程

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: