您好,欢迎访问三七文档
程序设计试题及答案(备注:试题难度评价采取五★级评价体系,分基础、容易、一般、稍难、难五个等级,其中的一、二、三★级都属于程序设计的基础试题级别,同学们稍加思考均有能力求得正确解答,对于四★级试题属于程序设计试题基础级别的思考题,五★级难度试题在此没有涉及,在程序设计高级试题中另行讲解。)程序设计试题几大分类:1、素数类问题(求素数的几种算法):2、数据排序问题(数据排序的几种方法):3、最大公约数和最小公倍数问题(几种算法):4、公式求解类问题(如求圆周率π、自然常数e、解方程等等):5、编号相反处理问题:6、约瑟夫问题(或猴子选大王问题、密码问题):7、回文数问题:8、高精度数值计算问题:9、数值计算问题:10、进制相互转换问题:11、字符串倒置问题:12、排列与组合类问题:13、因子、质因子(质因数)类相关问题:试题部分:(以下程序设计试题来自《奥赛经典(语言篇)》)第2章基本语句与程序结构例题部分:1、求梯形的面积。(梯形面积公式:)(★)2、求一元二次方程ax2+bx+C=0的两个实根。(求根公式:)(★)3、输入一个三位数的自然数,然后把这个数的百位与个位对调,输出对调后的结果。(★)4、输入三个数a、b、c,首先判断这三个数能否构成三角形,若能,则求出三角形的面积。(提示:海伦公式,其中,a、b、c为边长)(★)5、从键盘读入三个数,按从大到小的顺序把它们打印出来。(★)6、输入三角形的三边,判断它是否是直角三角形。(★)7、编写一个根据用户键入的两个操作数和一个运算符,由计算机输出运算结果的程序。(★★★)8、输入一个年号,判断它是否为闰年。(★)9、编程计算S=1+2+3+…+100。(★)相关练习:(1);(2);(3);(4);10、根据公式,计算圆周率的π值。(★★)11、计算n!。(n!=1×2×3×…×n,取n=10)(★★)12、已知一对兔子,每个月可以生一对小兔,而小兔过一个月后也可生一对小兔。即兔子的对数是:第一个月1对,第二个月2对,第三个月3对,第四个月5对,……,假设兔子的生育期是12个月,并且不死,问一年后,这对兔子有多少对活着的后代?(Fibonacci数列(★★))13、求两个整数a与b的最大公约数和最小公倍数。(★)14、利用格利高公式求π。,直到最后一项的值小于10-6为止。(★★★)相关练习:利用公式,求π。15、求100~999中的水仙花数。(若三位数ABC,ABC=A3+B3+C3,则称ABC为水仙花数。例如153,13+53+33=153,则153是水仙花数。)(★★)16、试编写能够打印输出如下图形的程序。(★★)AAAAAAAAAAAAAAAAAAAAAAAAA17、四个学生上地理课,回答我国四大淡水湖大小时这样说:(★★★)甲:“最大洞庭湖,最小洪泽湖,鄱阳湖第三。”2006-11-322:10回复yaochunhui1232楼乙:“最大洪泽湖,最小洞庭湖,鄱阳湖第二,太湖第三。”丙:“最小洪泽湖,洞庭湖第三。”丁:“最大鄱阳湖,最小太湖,洪泽湖第二,洞庭湖第三。”对于每个湖的大小,每个学生仅答对一个,请编程确定四个湖的大小。习题部分:1、已知三角形的两边a、b和夹角jc的值,求第三边(已知条件由键盘输入)。(★)(提示:余角公式)2、编写程序把一个四位整数3581颠倒成1853。(★)3、输入a、b、c三个数,打印出最大者。(★)4、从键盘读入两个数,比较其大小,把大数置于x,小数置于y。请设计实现该功能的程序。(★)5、输入三个数,判断以这三个数为边能否组成一个三角形。若不能,则给出适当信息;若能,则进一步判断它们构的是锐角三角形、直角三角形还是钝角三角形,并输出其特征(等边、等腰、直角、一般)、求其面积。(★★)6、设我国目前的人口为11亿,且每年的增长率为1.5%。问多少年后,我国的人口会翻一番?(★)7、Fibonacci数列问题:数列的头两个数分别是0和1,从第三个数开始,每个数皆为它的前两个数之和,即:0,1,1,2,3,5,…,输出该数列的第50个数。(★★)8、编写程序求出下式中n的最大值:22+42+62+…+n21500。(★★)9、把一元的钞票换成一分、二分和五分的硬币(每种至少一枚),问有多少种兑换方法?(★★)10、编写程序求最小正整数m、n(0nm)为何值时,1989m与1989n的最后三位数字相同?(★★★★)11、编写程序提示用户输入一系列整数,用0作结束标志,统计其中有多少个正数。(★)12、求自然常数的值。(提示:0!=1,1!=1)(★★)(1)直到第50项;(2)直到最后一项小于10-5。13、三齐王点兵的故事。相传三齐王韩信才智过人,从不直接清点自己军队的人数,只是让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了(不超过100人)。输入三次排尾的人数,输出总人数。(★★)14、编写程序,计算N!以十进制数形式表示的数中最右的非零数字,并找出在它右边有几个零。例如12!=1×2×3×…×12=479001600。因此12!的右边有2个零。(★★★)(提示:碰到乘以几后,积的结果才会产生零?)15、编写程序,输出“字母塔”。以此类推共26层。A(★★)ABAABCBA……………第4章数组类型例题部分:1、输入10个整数,把这10个数按从小到大的顺序排列。(★★)(冒泡法排序和选择法排序两种方法)2、折半查找。(二分法查找)(★★)3、旅馆里有一百个房间,从1到100编了号。第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是2的倍数的房间“相反处理”,第三个服务员把所有编号是3的倍数的房间作“相反处理”,……,以后每个服务员都是如此。问第100个服务员来过后,哪几扇门是打开的。(所谓“相反处理”是:原来开着的门关上,原来关上的门打开。)(★★)4、编写程序把任意十进制整数转换成二进制整数。(★★)2006-11-322:10回复3楼5、所谓“幻方”,是一个行、列为奇数的方阵,把1~n2这n2个yaochunhui123不同的数放入方阵中,使方阵的每行、每列和每个对角线上的元素的和全部相等。下面给出幻方的一种排列方法:(1)先把1放在第一行的中间位置;(2)下一个数放在上一个数的右上方;(3)若右上方已超出方阵的第一行,则下一个数放在下一列的最后一行上;(4)若右上方已超出方阵的最后一列,则下一个数放在上一行的第一列上;(5)若右上方已经有数,或右上方已超出方阵的第一行最后一列,则下一个数放在上一个数的正下方。编写程序,对输入小于15的n,打印出相应的幻方。(★★★)6、在一个字符数组LET中形成由A开始的连续26个大写字母构成的字串,并将其倒置后仍放在LET中。7、随机输入一个长度不超过255的字符串,将其倒置后输出。8、随机输入一些国家的英文名字,以end作为输入结束标志,按字母顺序排序后输出。9、求n个字符串的最长公共子串,n20,字符长度不超过255。例如n=3,由键盘依次输入三个字符串为:whatislocalbus?Namesomelocalbus.LocalbusishighspeedI/Obusclosetotheprocessor.则最长公共子串为“localbus”。10、文本的整版。编写一个程序,从键盘以任意的方法输入句子,然后打印出来。打印时每行宽度必须为n个字符。如果一行的最后一个单词超出了本行n个字符的范围,则应把它移到下一行去。输入一个句子测试你的程序。习题部分:1、输入n个整数,请找出最小数所在的位置,并把它与第一个数对调。(★)2、用边排序边合并的方法把两个有序数列合并为一个新的有序数列,不得先合并再重新排序。(★★)3、将一个数插入到有序的数列中,插入后数列仍然有序。(★★)4、有N个无序的数存放在A数组中,请将后面相同的数删成只剩下一个,并输出经过删除后的数列。(★★)5、有N个人排队到R个相同的水龙头去打水,他们装满各自水桶的时间T1、T2、…、TN为整数且互不相等,应如何安排他们打水的顺序才能使他们花费的总时间最少?(花费的总时间等于每个花费时间的总和)6、求一个五阶方阵中某个元素的位置:它在行上是最小的,在列上也是最小的,如果没有请输出“NOFIND!”。(★★★)第5章过程与函数例题部分:1、编程求:1!+3!+5!+7!+9!+11!。2、求数字的乘积根。一个正整数的数字的乘积N的定义是:这个整数中非零数字的乘积。例如,整数999的数字乘积为9×9×9,即729。729的数字乘积为7×2×9,即126。126的数字乘积为1×2×6,即12。12的数字乘积为1×2,即2。一个正整数的数字乘积根N是这样得到的:反复取该整数的数字乘积,直到得到一位数字为止。例如,在上面的例子中数字的乘积根是2。编写一个程序,输入一个正整数(长度不超过200位数字),输出计算其数字乘积根的每一步结果。3、汉诺(Hanoi)塔问题。设有n个大小不等的中空圆盘,按照从小到大(尺寸和序号)的顺序叠套在立柱A上。另有两根立柱B和C,如图所示。问题要求把全部圆盘从A柱(源柱)移到C柱(目标柱)。移动过程中可借助B柱(中间柱)。移动时有如下要求:2006-11-322:10回复yaochunhui1234楼(1)一次只能移动一个圆盘;(2)不允许把大盘放在小盘上边;(3)可使用任意一根立柱暂存圆盘。ABC4、把一个十进制整数转化为K进制数(K≤10)。5、八皇后问题:把八个皇后摆在8×8国际象棋棋盘格子内,使它们互不捕获对方。换言之,在任何一行、一列或一条对角线上,仅能放置一个皇后。这一问题是由19世纪著名数学家高斯(Gauss)于1850年首先提出的。(答案共有92种解答)6、已知:切比雪夫多项式如下:(提示:运用递归函数计算)对给定的不同的正整数,它是一些阶数不同的多项式,编程计算第n个多项式的值。习题部分:1、编写一递归函数说明,用以计算组合数C(M,N)。(即)2、两个人玩井字游戏,在井字进分的九个空位上轮流画O或*,谁最先使自己的三个O或三个*在一条直线上,谁就赢了。编写程序检查每一步是否走得正确,并告诉谁是胜利者。第6章集合与记录类型例题部分:1、七段数码管问题。2、任意给出一个正整数N,找一个正整数M,使得N*M的值的数字由0、1、…、C(C≤9)组成,且这些数字至少出现一次。编写程序在整数范围内找出满足条件的最小M。若没有给出信息,则输出“Nofind!”。例如:C=3、N=65时,M=48,65×48=3210;C=8、N=125时,“Nofind!”。(以下程序设计试题来自《计算机二级考试复习指南》)1.数列称为e数列,(★★)每一个e(n)(n=1,2,…)称为e数。求〔1,30000〕之内:(1)最大的e数;(2)e数的数目。2.计算并输出:之值(精确到小数点后第5位)。(★)3.已知,求:(★★)(1)F(50);(2)F(0)+F(1)+……+F(50)。4.求满足:A·B=716699并且A+B最小两个条件的A和B。(★★★)5.一自然数平方的末几位与该数相同时,称此数为自同构数。例如,由于52=25,则称5为自同构数。求出〔1,700〕以内的:(1)最大的自同构数;(2)自同构数数目。(★★)6.若某不含数字0的三位正整数,其平方数至少有三位同样的数字,则称该三位数为三重数。例如,由于:5112=261121(有三位1),所以511为三重数。求出:(★★★★)(1)按升序排列第10个三重数;(2)按升序排列前10个三重数之和;7.满足下列两个条件:(a)千位数字与百位数字相同(非0),十位数字与个位数字相同;(b)是某两位数的平方。的四位正整数称为四位平方数。例如,由于:7744=882,则称7744为四位平方数。求出:(1)所有四位平方数的数目;(2)所有四位平方数之和。(★★)8.其平方等于某两个正整数平方之和的正整数称为弦数。例如,由于32+42=52,因此5为弦数。求〔
本文标题:程序设计试题
链接地址:https://www.777doc.com/doc-2238131 .html