信息学奥林匹克竞赛辅导——程序设计试题答案部分 第1页 程序设计试题及答案 (备 注 : 试 题 难 度 评 价 采 取 五 ★级 评 价 体 系 , 分 基 础 、容易、一般、稍难 、难 五 个等级 , 其中的一、二、三★级 都属于程序设计的基 础 试 题 级 别, 同学们稍加思考均有能力求得正确解答, 对于四★级 试题 属于程序设计试 题 基 础 级 别的思考题 , 五 ★级 难 度 试 题 在此没有涉及, 在程序设计高级 试 题 中另行讲解。对于基 础 和容易两个级 别的程序设计试 题 , 若能够给出语句分 类(如 If 条件语句、条件语句嵌套、循环语句、多重循环语句等)的将尽量给出。若属于 13 大类别的将尽量标注 。) 程序设计试题几大分类: 1、 素数类问题(求素数的几种算法): 2、 数据排序问题(数据排序的几种方法): 3、 最大公约数和最小公倍数问题(几种算法): 4、 公式求解类问题(如求圆周率π、自然常数e、解方程等等): 5、 编号相反处理问题: 6、 约瑟夫问题(或猴子选大王问题、密码问题): 7、 回文数问题: 8、 高精度数值计算问题: 9、 数值计算问题: 10、进制相互转换问题: 11、字符串倒置问题: 12、排列与组合类问题: 13、因子、质因子(质因数)类相关问题: 答案部分: (程序设计的源程序没有统一的标准答案, 实现程序的算法也是多种多样, 但结果是唯一的, 算法也有优劣之分 , 一个程序的优劣, 关键在于是否找到了好的算法, 以下程序和算法不一定就是最佳算法和最佳程序, 只能仅 供 参 考, 希 望 同学们能够对某 些 程序提 出更 好的算法来 改 进 程序) (经常碰到的判断是否为素数、是否为回文数、求两个数的最大公约数、求两个数的最小公倍数等问题的子函数源程序,请务必记住!) ① 判断是否为素数,若是素数则返回 tru e,若不是素数则返回 false: fu nction prime(x :longint):boolean; v ar j,y :longint; begin prime:=tru e; 信息学奥林匹克竞赛辅导——程序设计试题答案部分 第2页 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...