版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、信息学奥林匹克竞赛辅导一一程序设计试题答案部分第39页程序设计试题及答案(备注:试题难度评价采取五级评价体系,分基础、容易、一般、稍难、难五个等级,其中的一、 二、三级都属于程序设计的基础试题级别,同学们稍加思考均有能力求得正确解答,对于四级 试题属于程序设计试题基础级别的思考题,五级难度试题在此没有涉及,在程序设计高级试题中另行讲解。对于基础和容易两个级别的程序设计试题,若能够给出语句分类(如If条件语句、条件语句嵌套、循环语句、多重循环语句等)的将尽量给出。若属于13大类别的将尽量标注。)程序设计试题几大分类:1、素数类问题(求素数的几种算法):2、数据排序问题(数据排序的几种方法):3、
2、最大公约数和最小公倍数问题(几种算法):4、公式求解类问题(如求圆周率 兀、自然常数e、解方程等等):5、编号相反处理问题:6、约瑟夫问题(或猴子选大王问题、密码问题) :7、回文数问题:8、高精度数值计算问题:9、数值计算问题:10、进制相互转换问题:11、字符串倒置问题:12、排列与组合类问题:13、因子、质因子(质因数)类相关问题:答案部分:(程序设计的源程序没有统一的标准答案,实现程序的算法也是多种多样,但结果是唯一的,算法也 有优劣之分,一个程序的优劣,关键在于是否找到了好的算法,以下程序和算法不一定就是最佳算 法和最佳程序,只能仅供参考,希望同学们能够对某些程序提出更好的算法来改进
3、程序)(经常碰到的判断是否为素数、是否为回文数、求两个数的最大公约数、求两个数的最小公倍数等问题的子函数源程序,请务必记住!)判断是否为素数,若是素数则返回true,若不是素数则返回false:function prime(x:longint):boolean;varj,y:longint;beginprime:=true;if x<2 then prime:=false;y:=trunc(sqrt(x);for j:=2 to y doif (x mod j = 0) thenbegin prime:=false; exit; end;end;备注:1 100之间所有的素数:2、3、5
4、、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;varm,i,j:longint;a:array1.10 of integer;beginif n<0 then begin huiwen:=false; exit; end;m:=n; i:=0; huiwen:=true;repeati:=i+1;ai:=m mod 10;m:=m div 10;
5、until m=0;for j:=1 to (i div 2) doif aj<>ai-j+1 thenbegin huiwen:=false; exit; end;end;求最大公约数子函数,返回两个正整数的最大公约数,采用辗转相除法算法;function gcd(a,b:longint):longint;beginif b=0 then gcd:=aelse gcd:=gcd(b,a mod b);end;求最小公倍数:lcm=a*b div gcd(a,b);(以下程序设计试题来自奥赛经典(语言篇)»)第2章基本语句与程序结构例题部分:11、求梯形的面积。(梯形面积
6、公式:S=h(a+b)(,测试数据2、求一元二次方程 ax2+bx + C= 0的两个实根。(求根公式:x12 = )2a(,测试数据 a= 1, b=5, c= 6;答案:x1=2、x2= 3)3、输入一个三位的自然数,然后把这个数的百位与个位对调,输出对调后的结果。()4、输入三个数a、b、c,首先判断这三个数能否构成三角形,若能,则求出三角形的面积。(提示:海伦公式 S = Jd(d -a)(d -b)(d-c),其中 d -a + b+c , a、b、c为边长)2(, If条件语句,测试数据 a= 5, b=6, c=7;答案:14.7)5、从键盘读入三个数,按从大到小的顺序把它们打印
7、出来。(, 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 11相关练习:(1)S=1+_+_+ | +;(2)S = 12+22+ I+1002 ;2 3100(3)S =2 + 4+6+川+100;(4)S=1+4+7+10+
8、川+100;(相关练习答案:(1) 5.19 (保留 2 为小数);(2) 338350; (3) 2550; (4) 1717),二211 ml 110、根据公式 =1 +下+二+|I|+f,计算圆周率的 兀值。623 n(,循环语句,测试数据n= 10000;答案:3.1414971639)program e; vari:longint;s:real;beginwriteln; s:=0;for i:=1 to 10000 do s:=s+1/(i*i);writeln(sqrt(6*s);end.11、计算 n!。(n! = 1 X2X 3X , x n,取 n= 10)(,循环语句,1
9、0! = 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)10-6为止。14、利用格利高公式求兀。± =11+11+IH,直到最后一项的值小于4
10、3 5 7(,循环语句)(答案: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; writeln('pi=',p); end.相关练习:利用公式三 1 . 18 一1 3 5 79 11+HI,求兀。(计算前10000项时,答案为 3.1415426536 )program
11、e;vari,a,b:longint;x,s:real;beginwriteln; s:=0;for i:=1 to 10000 do begin a:=(4*i-3);b:=(4*i-1);s:=s+1/(a*b); end;writeln(8*s); end.15、求100999中的水仙花数。(若三位数 ABC ABG= A + B3+C3,则称ABC为水仙花数。例如153, 13+ 53+ 33= 153,则153是水仙花数。)(,循环语句)(答案:153、370、371、407)program e12; vari,a,b,c:integer;beginwriteln;for i:=10
12、0 to 999 dobegina:=i div 100;b:=(i mod 100) div 10;c:=i mod 10;if i=a*a*a+b*b*b+c*c*c then write(i:8);end;end.16、试编写能够打印输出如下图形的程序。(,循环语句)AAAAAAAAAAAAAAAAAAAAAAAAAprogram e;const n=5; vari,j:integer; beginwriteln;for i:=1 to n do beginwrite('':i);for j:=1 to (n-i)*2+1 do write('A');wr
13、iteln;end; end.17、四个学生上地理课,回答我国四大淡水湖大小时这样说:()甲:“最大洞庭湖,最小洪泽湖,鄱阳湖第三。 ”乙:“最大洪泽湖,最小洞庭湖,鄱阳湖第二,太湖第三。”丙:“最小洪泽湖,洞庭湖第三。”丁:“最大鄱阳湖,最小太湖,洪泽湖第二,洞庭湖第三。”对于每个湖的大小,每个学生仅答对一个,请编程确定四个湖的大小。习题部分:1、已知三角形的两边a、b和夹角jc的值,求第三边(已知条件由键盘输入) 。()(提示:余角公式 c2 =a2 +b2 -2abcosc)(测试数据:输入 a=3、b= 4、jc=90;输出5)program e2_5;vara,b,c,jc:real
14、;beginwriteln('input a,b,jc:'); readln(a,b,jc);c:=sqrt(a*a+b*b-2*a*b*cos(pi*jc/180);writeln(c:8:2);end.2、编写程序把一个四位整数3581颠倒成1853。()program e;const n=3581;vara,b,c,d:integer;beginwriteln;a:=n mod 10;b:=(n div 10) mod 10;c:=(n div 100) mod 10;d:=n div 1000;writeln(a,b,c,d);end.相关练习:任意输入一个正整数,颠倒
15、输出该数。program e; varn:longint;beginwriteln; writeln('input a integer number:'); readln(n);repeatwrite(n mod 10); n:=n div 10;until n=0;end.3、输入a、b、c三个数,打印出最大者。(, If条件语句)program e; vara,b,c:real;beginwriteln('input three number for a,b,c:');readln(a,b,c);if (a>b)and(a>c) then wri
16、teln(a);else if (b>a)and(b>c) then writeln(b);else writeln(c);end.4、从键盘读入两个数,比较其大小,把大数置于x,小数置于y。请设计实现该功能的程序。(, If条件语句)(程序略)5、输入三个数,判断以这三个数为边能否组成一个三角形。若不能,则给出适当信息;若能,则进一步判断它们构的是锐角三角形、直角三角形还是钝角三角形,并输出其特征(等边、等腰、直角、一般)、求其面积。(, If条件语句)(算法分析:对于判断是锐角、直角、还是钝角三角形,只需判断最大边的平方与其余两边的平方和的大小比较即可,小于则为锐角、等于则为直
17、角、大于则为钝角。)(测试数据:1、2、3;3、4、5;)4、4、7;5、5、5;答案:No;直角、面积6.00;钝角、等腰、面积 6.78;锐角、等边、面积 10.83 )program e; vara,b,c,t,s,d,ja,jb,jc:real;beginwriteln('input three number for a,b,c:');readln(a,b,c);if a<b then begin t:=a; a:=b; b:=t; end;if a<c then begin t:=a; a:=c; c:=t; end;if (a<b+c) thenb
18、eginif (a*a<b*b+c*c) then writeln('rui jiao san jiao xing.')else if(a*a=b*b+c*c) then writeln('zhi jiao san jiao xing.')else writeln('dun jiao san jiao xing.');if (a=b)and(b=c)and(c=a) then writeln('deng bian san jiao xing.')else if (a=b)and(b<>c)or(a=c)and(c
19、<>b)or(b=c)and(c<>a) then writeln('deng yao san jiao xing.')else if (a*a<>b*b+c*c) then writeln('yi ban san jiao xing.');d:=(a+b+c)/2;s:=sqrt(d*(d-a)*(d-b)*(d-c);writeln('s=',s:0:2);endelse writeln('NO!');end.6、设我国目前的人口为11亿,且每年的增长率为1.5%。问多少年后,我国的人口会翻
20、一番?()(答案:47)program e2_22; vari:integer;s:real;beginwriteln; s:=11; i:=0;while s<22 dobegin s:=s*(1.015); inc(i); end;writeln(i);end.7、Fibonacci数列问题:数列的头两个数分别是0和1,从第三个数开始,每个数皆为它的前两个数之和,即:0, 1, 1, 2, 3, 5,输出该数列的第 50个数。(,循环语句)(答案:7778742049)program e;$N+,E+ vari:integer;x,y,z:extended;beginwriteln;
21、 x:=0; y:=1; write(x:20:0,y:20:0);for i:=3 to 50 dobegin z:=x+y;write(z:20:0);x:=y;y:=z; end;end.8、编写程序求出下式中 n的最大值:22+42+ 62+, + n2<1500o(,循环语句)(答案:18)program e2_24;varn,s:integer;beginwriteln;s:=0; n:=0;while s<1500 dobegin inc(n,2); inc(s,n*n); end;writeln(n-2); end.9、把一元的钞票换成一分、二分和五分的硬币(每种至
22、少一枚),问有多少种兑换方法?()(答案:461program e2_29; var i,j,k,ans:integer;beginans:=0;for k:=1 to 19 dofor j:=1 to 47 do for i:=1 to 93 doif (k*5+j*2+i)=100 then inc(ans); writeln(ans);end.10、编写程序求最小正整数m、n (0<n<m)为何值时,1989m与1989n的最后三位数字相同?()(算法:这类数字很大且有效数字位数很多(超出最多有效位数extended数据类型有效数字18位)的数字问题,一定要另辟蹊径寻找突破口
23、,注意到此题只要求最后三位数字相同, 则我最多保留最后四位有效数字即可进行判断。还请记住这样一个事实,如 1989X 1989 =3956121, 3956121 X 1989= 7868724669,最后四位数字是 “ 4669”,而我把 3956121 取其最 后的四位数“ 6121”与1989相乘即6121 X 1989=12174669,最后四位数字也是“ 4669”, 没有破坏最后四位有效数字的值,因此可以通过这种方法来编写此程序。)(答案:m=51; n= 1);program e; varm,n,i,j:integer; x,y,a,b:longint; beginwriteln
24、;for m:=2 to 60 dofor n:=1 to m-1 do beginx:=1; y:=1;for i:=1 to m do begin x:=x mod 10000; x:=x*1989; a:=x mod 1000; end; for j:=1 to n do begin y:=y mod 10000; y:=y*1989; b:=y mod 1000; end; if a=b then writeln('m=',m,' n=',n);end;end.11、编写程序提示用户输入一系列整数,用0作结束标志,统计其中有多少个正数。()program
25、 e; varcount,x:integer;beginwriteln; writeln('input integer number(0-end):'); count:=0; repeatread(x);if x>0 then inc(count);until(x=0);writeln('count=',count);end.111. .112、求自然吊数 e=+H +的值。(提不:0! =1, 1! =1)()0! 1! 2! n!(1) 直到第50项;(2)直到最后一项小于105。(答案:(1) 2.71828182845905E+0000 ;(2)
26、2.71828152557319E+0000 )(备注:第2小问程序略,只须将更改语句“ until (1/s)<1E-5; ”即可求的解答) program e2_35;$N+ 一 var i,count:integer; e,s:extended; begin e:=1; count:=0; repeat inc(count); s:=1; for i:=1 to count do s:=s*i; e:=e+1/s;until count=50;writeln(e); end.13、三齐王点兵的故事。相传三齐王韩信才智过人,从不直接清点自己军队的人数,只是让士兵 先后以三人一排、五人
27、一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总 人数了(不超过100人)。输入三次排尾的人数,输出总人数。()program e2_36; vara,b,c,i:integer;beginwriteln('shu ru p3(02),p5(04),p7(06) de wei shu:');readln(a,b,c);for i:=100 downto 1 doif (i mod 3=a)and(i mod 5=b)and(i mod 7=c) then writeln(i);if i=1 then writeln('No answer!'); en
28、d.14、编写程序,计算 N!以十进制数形式表示的数中最右的非零数字,并找出在它右边有几个零。 例如 12! = 1X 2X 3X,X 12=479001600。因此 12!的右边有 2个零。()(提示:碰到5、52、53、54,才会出现末尾是零,所以1000!末尾零的个数为:(1000 div 5) + ( 1000 div 52) + ( 1000 div 53) + ( 1000 div 54) = 249)(下面的程序没采用上面的算法,采取另一种算法实现了这一程序,显然上面的算法效率高)(程序算法:只需提供末尾几位有效数字即可,我采取提供四位有效数字相乘)program I_11; v
29、ars:longint;i,d:integer;beginwriteln;d:=0; s:=1;for i:=1 to 1000 do begins:=s*i;if (s mod 1000 =0) then begin s:=s div 1000; d:=d+3; end;if (s mod 100 = 0) then begin s:=s div 100;d:=d+2; end;if (s mod 10 = 0) then begin s:=s div 10;d:=d+1; end;s:=s mod 10000;end;writeln; write(d);end.15、编写程序,输出“字母塔
30、”。以此类推共26层。A()ABAABCBAprogram e2_40; vari,j:integer;beginwriteln;for i:=1 to 26 dobeginfor j:=1 to 26-i do write(' ');for j:=1 to i do write(chr(64+j);for j:=i-1 downto 1 do write(chr(64+j);writeln;end;end.第4章数组类型例题部分:1、输入10个整数,把这10个数按从小到大的顺序排列。()(冒泡法排序和选择法排序两种方法)冒泡法排序:program e1;const n=10;
31、 var a:array1.10 of integer; i,j,t:integer;beginwriteln('input ',n,' integer number:');for i:=1 to n do read(ai);for i:=1 to n-1 dofor j:=1 to n-i doif aj>aj+1 then begin t:=aj; aj:=aj+1; aj+1:=t; end;for i:=1 to n do write(ai:5);end.2、折半查找。(二分法查找)()3、旅馆里有一百个房间,从1到100编了号。第一个服务员把所有
32、的房间门都打开了,第二个服务员把所有编号是 2的倍数的房间“相反处理”,第三个服务员把所有编号是3的倍数的房间作“相反处理”,以后每个服务员都是如此。问第100个服务员来过后,哪几扇门是打开的。(所谓“相反处理”是:原来开着的门关上,原来关上的门打开。)()(提示:对于任何一个编号,例如 8,它的因子只有1、2、4、8,并且成对出现,当此数的因 子数为偶数个时将被关上,当此数的因子数为奇数个时才会被打开。考虑到因子成对出现的情况,因此只有平方数的因子是奇数个的,所以门被打开的只能是平方数的房间,如1, 4等)4、编写程序把任意十进制整数转换成二进制整数。()5、所谓“幻方”,是一个行、列为奇数
33、的方阵,把 1n2这n2个不同的数放入方阵中,使方阵的 每行、每列和每个对角线上的元素的和全部相等。下面给出幻方的一种排列方法:(1) 先把1放在第一行的中间位置;(2) 下一个数放在上一个数的右上方;(3) 若右上方已超出方阵的第一行,则下一个数放在下一列的最后一行上;(4) 若右上方已超出方阵的最后一列,则下一个数放在上一行的第一列上;(5) 若右上方已经有数,或右上方已超出方阵的第一行最后一列,则下一个数放在上一个数的正下方。编写程序,对输入小于15的n,打印出相应的幻方。()6、在一个字符数组 LET中形成由A开始的连续26个大写字母构成的字串,并将其倒置后仍放在 LET 中。7、随机
34、输入一个长度不超过255的字符串,将其倒置后输出。8、随机输入一些国家的英文名字,以 end作为输入结束标志,按字母顺序排序后输出。9、求n个字符串的最长公共子串,n<20,字符长度不超过255。例如n=3,由键盘依次输入三个字符串为:what is local bus?Name some local bus.Local bus is high speed I/O bus close to the processor.则最长公共子串为" local bus”。10、文本的整版。编写一个程序,从键盘以任意的方法输入句子,然后打印出来。打印时每行宽 度必须为n个字符。如果一行的最后
35、一个单词超出了本行n个字符的范围,则应把它移到下一行去。输入一个句子测试你的程序。习题部分:1、输入n个整数,请找出最小数所在的位置,并把它与第一个数对调。()program e4_2; vara:array1.10of integer;i,t,y:integer;beginwriteln('input ten integer number:');for i:=1 to 10 do read(ai);t:=a1;for i:=2 to 10 do if ai<t then t:=ai;for i:=1 to 10 doif ai=t then begin writeln(
36、'the min number is ',i,'th');ai:=a1; a1:=t; end;for i:=1 to 10 do write(ai:8);end.2、用边排序边合并的方法把两个有序数列合并为一个新的有序数列,不得先合并再重新排序。()(测试数据:这里 a组数据共8个:1 1 3 6 6 7 9 10;b组数据共5个:0 1 2 3 4 )program e4_3;vara:array1.8 of integer;b:array1.5 of integer;c:array1.13 of integer;i,j,k,m,n:integer;begi
37、nwriteln('input 8 integer number of square arrayA:');for i:=1 to 8 do read(ai);writeln('input 5 integer number of square arrayB:');for i:=1 to 5 do read(bi);j:=1;k:=1;m:=aj;n:=bk;for i:=1 to 13 dobeginif m<n thenbeginci:=m; inc(j); m:=aj;if j=9 then m:=maxint;endelsebeginci:=n; in
38、c(k); n:=bk;if k=6 then n:=maxint;end;end;for i:=1 to 13 do write(ci:4);end.3、将一个数插入到有序的数列中,插入后数列仍然有序。()(测试数据:有序数组为1 1 3 6 6 7 9 10;待插入数为5)program e4_4; vari,j,n:integer;flag:boolean;a:array1.9 of integer;beginwriteln('input 8 integer square number:');for i:=1 to 8 do read(ai);writeln('i
39、nput a integer number to insert:');readln(n);flag:=false; i:=1;repeatif ai>n then flag:=true else inc(i);until flag=true;for j:=9 downto i+1 do aj:=aj-1;ai:=n;for i:=1 to 9 do write(ai:4);end.4、有N个无序的数存放在 A数组中,请将后面相同的数删成只剩下一个,并输出经过删除后的数列。()(测试数据:数列为 1 3 5 3 7 5 3 1; 答案:1 3 5 7)program e4_5; v
40、ara:array1.8 of integer;i,j,n:integer;beginwriteln('input 8 integer number:');for i:=1 to 8 do read(ai);for i:=2 to 8 dofor j:=1 to i-1 do if ai=aj then ai:=maxint;for i:=1 to 8 doif ai<>maxint then write(ai:4);end.5、有N个人排队到R个相同的水龙头去打水,他们装满各自水桶的时间T1、T2、,、 TN为整数且互不相等,应如何安排他们打水的顺序才能使他们花费
41、的总时间最少?(花费的总时间等于每个花费时间的总和)6、求一个五阶方阵中某个元素的位置:它在行上是最小的, 在列上也是最小的, 如果没有请输出“NO FIND!”。()(分析:整个矩阵中的最小值,当然也是所在行和所在列的最小值,因此肯定能找到这样的数)测试数据:答案:2、1、3、61142785923125322211815171624126program e; var1310192014i,j,x,y:integer;minx:integer;a:array1.5,1.5 of integer;beginwriteln; writeln('input number(5*5):'
42、;);for i:=1 to 5 dofor j:=1 to 5 doread(ai,j);for i:=1 to 5 dobeginminx:=ai,1;x:=i;y:=1;for j:=1 to 5 doif ai,j<minx then begin minx:=ai,j; y:=j; end;for j:=1 to 5 doif aj,y<minx then break;if j=5 then writeln('the number is ',minx,'',x,'','',y,'');end;e
43、nd.第5章过程与函数例题部分:1、编程求:1! +3! +5! +7! +9! +11!。2、求数字的乘积根。一个正整数的数字的乘积N的定义是:这个整数中非零数字的乘积。例如,整数999的数字乘积为 9X9X9,即729。729的数字乘积为7X2X9,即126。126的数字乘 积为1X2X6,即12。12的数字乘积为1X2,即2。一个正整数的数字乘积根 N是这样得到 的:反复取该整数的数字乘积,直到得到一位数字为止。例如,在上面的例子中数字的乘积根 是2。编写一个程序,输入一个正整数(长度不超过200位数字),输出计算其数字乘积根的每一步结果。3、汉诺(Hanoi)塔问题。设有 n个大小不等
44、的中空圆盘,按照从小到大(尺寸和序号)的顺序 叠套在立柱 A上。另有两根立柱 B和C,如图所示。问题要求把全部圆盘从A柱(源柱)移到C柱(目标柱)。移动过程中可借助 B柱(中间柱)。移动时有如下要求:(1) 一次只能移动一个圆盘;(2) 不允许把大盘放在小盘上边;(3) 可使用任意一根立柱暂存圆盘。ariBriC4、把一个十进制整数转化为K进制数(KW10)。5、八皇后问题:把八个皇后摆在8X 8国际象棋棋盘格子内,使它们互不捕获对方。换言之,在任何一行、一列或一条对角线上,仅能放置一个皇后。这一问题是由19世纪著名数学家高斯(Gauss)于1850年首先提出的。(答案共有92种解答)6、已知
45、:切比雪夫多项式如下:(提示:运用递归函数计算)1(n=0)Tn(x) = x(n =1)2xTn(x) -Tnz(x) (n -2)对给定的不同的正整数,它是一些阶数不同的多项式,编程计算第 n个多项式的值。习题部分:1、编写一递归函数说明,用以计算组合数C (M, N)。(即CM )2、两个人玩井字游戏,在井字进分的九个空位上轮流画。或*,谁最先使自己的三个。或三个*在一条直线上,谁就赢了。编写程序检查每一步是否走得正确,并告诉谁是胜利者。第6章集合与记录类型例题部分:1、七段数码管问题。2、任意给出一个正整数N,找一个正整数 M,使得N*M的值的数字由0、1、,、C (CW9)组成,且这
46、些数字至少出现一次。编写程序在整数范围内找出满足条件的最小Mo若没有给出信息,则输出“ No find !”。例如:C=3、N = 65 时,M = 48, 65X48=3210;C=8、N=125 时,“No find !”。(以下程序设计试题来自计算机二级考试复习指南)e(1) =e(2) =1,一,一1 .数列1,-称为e数列,()e(n) =(n-1)i(n-1) (n-2)_e(n-2) (n 2)每一个 e (n) (n=1, 2,)称为 e数。求1, 30000之内:(1) 最大的e数;(2) e数的数目。(该数列前面几项为1、1、3、11、53、,;答案:16687;8)pro
47、gram e;vara,b,c,n:longint;beginwriteln; n:=3;a:=1; b:=1;repeatc:=(n-2)*a+(n-1)*b;a:=b; b:=c; inc(n);until c>30000;writeln('maxe=',a,' count=',n-2);end.10002. 计算并车觥H:S=£ 之值(精确到小数点后第5位)。()y i (i 1)(答案:0.99900)program e;vari:integer;s,n:real;beginwriteln; s:=0;for i:=1 to 1000 d
48、o begin n:=i;s:=s+1/(n*(n+1); end;writeln(s:0:5);end.F(0) = F(1) = F(2)=13. 已知i,求:()F(N) =F(N -1)-2F(N -2) F(N -3) (N 2)(1) F (50); (2) F (0) +F (1) +, + F (50)。(答案: 212101;97262)program e;vari,a,b,c,d,s:longint;beginwriteln; a:=1; b:=1; c:=1; s:=3;for i:=3 to 50 dobegin d:=a-2*b+c;s:=s+d; a:=b; b:=
49、c; c:=d; write(d:8); end;writeln; writeln('s=',s);end.4. 求满足:A B = 716699并且A + B最小两个条件的 A和B。()(答案:A = 563;B=1273)program e;vara,x,s,mina,minb:longint;beginwriteln; s:=716699; x:=trunc(sqrt(716699);for a:=1 to x doif (716699 mod a=0)and(a+(716699 div a)<s) thenbegin s:=a+(716699 div a); mi
50、na:=a; minb:=(716699 div a); end;writeln('A=',mina,' B=',minb);end.5. 一自然数平方的末几位与该数相同时,称此数为自同构数。例如,由于52=25,则称5为自同构数。求出1, 700以内的:(1)最大的自同构数;(2)自同构数数目。()(答案:625)7)program e;vari,count:longint;beginwriteln; count:=0;for i:=1 to 9 doif (i*i-i) mod 10=0 then inc(count);for i:=10 to 99 doi
51、f (i*i-i) mod 100=0 then inc(count); for i:=100 to 700 doif (i*i-i) mod 1000=0 then begin inc(count); write(i:8); end;writeln; writeln('count=',count);end.6. 若某不含数字0的三位正整数,其平方数至少有三位同样的数字,则称该三位数为三重数。例如,由于:5112=261121 (有三位1),所以511为三重数。求出:(1)按升序排列第10个三重数;(2)按升序排列前10个三重数之和;(答案:(1) 258;(2) 1826)p
52、rogram e1; vari,j,k,a,b,c,x,n,count,s:longint;aa:array1.5of integer;beginwriteln;s:=0; count:=0;for i:=111 to 316 do begina:=i div 100;b:=(i div 10) mod 10; c:=i mod 10;if (a<>0)and(b<>0)and(c<>0) thenbeginx:=i*i;aa1:=x div 10000;aa2:=(x div 1000) mod 10;aa3:=(x div 100)mod 10;aa4:
53、=(x div 10)mod 10;aa5:=x mod 10; for j:=1 to 3 do beginn:=1;for k:=j+1 to 5 doif aaj=aak then n:=n+1;if n>2 then begin writeln(i:8,x:8); s:=s+i; count:=count+1; break; end;end;end;if count=10 then break;end;writeln(s:8); end.7. 满足下列两个条件:(a)千位数字与百位数字相同(非 0),十位数字与个位数字相同;(b)是某两位数的平方。的四位正整数称为四位平方数。例如
54、,由于:7744=882,则称7744为四位平方数。求出:(1)所有四位平方数的数目;(2)所有四位平方数之和。()(分析:最小四位数1000是31.6的平方,最大的四位数 9999是99.9的平方)(答案:1;7744)program e; vari,x,count,s:longint; beginwriteln; count:=0; s:=0;for i:=32 to 99 do beginx:=i*i;if (x div 1000)=(x div 100) mod 10)and(x div 10) mod 10)=(x mod 10) then begin inc(count); s:=
55、s+x; end;end;writeln('count=',count,' s=',s); end.8. 其平方等于某两个正整数平方之和的正整数称为弦数。例如,由于32+42= 52,因此5为弦数。求121, 130之间:(1)弦数数目;(2)最小的弦数;(3)最大的弦数。()(分析:设a2+b2=c2,且a<b,这样可以控制出现重复弦数"")(答案:4;122;130)program e; var i,j,k,x,count:longint; begin writeln; count:=0; for i:=121 to 130 do begin x:=trunc(sqrt(i*i/2); for j:=1 to x do begin k:=trunc(sqrt(i*i-j*j); if (i*i=j*j+k*k) then begin inc(count); writeln(i,'*',i,'=',j,'*',j,'+',k,'*',k); break; end; end; end;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 恋爱协议书双人舞
- 复印设备制造工岗前安全生产知识考核试卷含答案
- 汽车车身整形修复工操作规程考核试卷含答案
- 超市员工仪容仪培训课件
- 酱油制作工岗前岗中技能考核试卷含答案
- 糖汁蒸发工安全生产规范模拟考核试卷含答案
- 二硫化碳生产工操作规范测试考核试卷含答案
- 陶瓷产品设计师标准化测试考核试卷含答案
- 糕点装饰师安全知识宣贯能力考核试卷含答案
- 油气管道维护工安全生产规范考核试卷含答案
- 2025年国资委主任年终述职报告
- 大学教学督导与课堂质量监控工作心得体会(3篇)
- 2025年下半年国家教师资格幼儿园《综合素质》考试真题及参考答案
- 项目专家评审意见书标准模板
- 评审委托协议书
- 黑龙江中医药大学《无机化学》2025 学年第二学期期末试卷
- 2025年高中计算机操作试题题库及答案
- 研学基地课程书籍或课件
- 杭州市西湖区人民政府西溪街道办事处公开招聘编外合同制工作人员5人考试笔试备考试题及答案解析
- 日本所有番号分类
- 2024年江苏省普通高中学业水平测试小高考生物、地理、历史、政治试卷及答案(综合版)
评论
0/150
提交评论