欢迎来到天天文库
浏览记录
ID:10961238
大小:190.97 KB
页数:89页
时间:2018-07-09
《基本算法题库个基本算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、89第页共89页信息学奥林匹克竞赛辅导——程序设计试题答案部分第89页程序设计试题及答案(备注:试题难度评价采取五★级评价体系,分基础、容易、一般、稍难、难五个等级,其中的一、二、三★级都属于程序设计的基础试题级别,同学们稍加思考均有能力求得正确解答,对于四★级试题属于程序设计试题基础级别的思考题,五★级难度试题在此没有涉及,在程序设计高级试题中另行讲解。对于基础和容易两个级别的程序设计试题,若能够给出语句分类(如If条件语句、条件语句嵌套、循环语句、多重循环语句等)的将尽量给出。若属于13大类别的将尽量标注。)程序设计试题几
2、大分类:1、素数类问题(求素数的几种算法):2、数据排序问题(数据排序的几种方法):3、最大公约数和最小公倍数问题(几种算法):4、公式求解类问题(如求圆周率π、自然常数e、解方程等等):5、编号相反处理问题:6、约瑟夫问题(或猴子选大王问题、密码问题):7、回文数问题:8、高精度数值计算问题:9、数值计算问题:10、进制相互转换问题:11、字符串倒置问题:12、排列与组合类问题:13、因子、质因子(质因数)类相关问题:答案部分:(程序设计的源程序没有统一的标准答案,实现程序的算法也是多种多样,但结果是唯一的,算法也有优劣之分
3、,一个程序的优劣,关键在于是否找到了89第页共89页信息学奥林匹克竞赛辅导——程序设计试题答案部分第89页好的算法,以下程序和算法不一定就是最佳算法和最佳程序,只能仅供参考,希望同学们能够对某些程序提出更好的算法来改进程序)(经常碰到的判断是否为素数、是否为回文数、求两个数的最大公约数、求两个数的最小公倍数等问题的子函数源程序,请务必记住!)1判断是否为素数,若是素数则返回true,若不是素数则返回false:functionprime(x:longint):boolean;varj,y:longint;beginprime:
4、=true;ifx<2thenprime:=false;y:=trunc(sqrt(x));forj:=2toydoif(xmodj=0)thenbeginprime:=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个)2判断是否为回文数,若是回文数则返回true,若不是回文数则返回false:functionhuiwen(n:longint):boole
5、an;varm,i,j:longint;a:array[1..10]ofinteger;beginifn<0thenbeginhuiwen:=false;exit;end;m:=n;i:=0;huiwen:=true;repeati:=i+1;a[i]:=mmod10;m:=mdiv10;untilm=0;89第页共89页信息学奥林匹克竞赛辅导——程序设计试题答案部分第89页forj:=1to(idiv2)doifa[j]<>a[i-j+1]thenbeginhuiwen:=false;exit;end;end;3求最大公约数
6、子函数,返回两个正整数的最大公约数,采用辗转相除法算法;functiongcd(a,b:longint):longint;beginifb=0thengcd:=aelsegcd:=gcd(b,amodb);end;4求最小公倍数:lcm=a*bdivgcd(a,b);(以下程序设计试题来自《奥赛经典(语言篇)》)第2章基本语句与程序结构例题部分:1、求梯形的面积。(梯形面积公式:)(★,测试数据12、求一元二次方程ax2+bx+C=0的两个实根。(求根公式:)(★,测试数据a=1,b=-5,c=6;答案:x1=2、x2=3)3
7、、输入一个三位的自然数,然后把这个数的百位与个位对调,输出对调后的结果。(★)4、输入三个数a、b、c,首先判断这三个数能否构成三角形,若能,则求出三角形的面积。89第页共89页信息学奥林匹克竞赛辅导——程序设计试题答案部分第89页(提示:海伦公式,其中,a、b、c为边长)(★,If条件语句,测试数据a=5,b=6,c=7;答案:14.7)1、从键盘读入三个数,按从大到小的顺序把它们打印出来。(★,If条件语句)2、输入三角形的三边,判断它是否是直角三角形。(★,If条件语句,测试数据13、4、5;24、5、6;答案1Yes;
8、2No)3、编写一个根据用户键入的两个操作数和一个运算符,由计算机输出运算结果的程序。(★★★)4、输入一个年号,判断它是否为闰年。(★,If条件语句,测试数据11900;22000;32008;答案:1No;2Yes;3Yes)5、编程计算S=1+2+3+…+100。(★,
此文档下载收益归作者所有