pascal算法题
82111668_2012版Pascal算法高级视频教程附带例题与答案
82111668_2012版Pascal高级算法视频教程附带例题与答案82111668_2012出品例:2.1.1 高精度加法program ex(input,output);typearr=array [1..256] of integer;var st1,st2,st3:string;sz1,sz2,sz3:arr;i:integer;procedure sum(st:string;varsz:arr);vari,code:integer;beginfor i:=1 to length(st) doval(st[length(st)+1-i],sz[i],code);end;functionfac:boolean;var j:integer;beginfac:=true;for j:=256 downto i+1 doif sz3[j]<>0 thenfac:=false;exit;end;end;procedure start;beginfor i:=1 to 256 dobeginsz1[i]:=0;sz2[i]:=0;sz3[i]:=0;end;end;beginstart;readln(st1);readln(st2);sum(st1,sz1);sum(st2,sz2);{字符串→数组} st3:='';for i:=1 to 255 dosz3[i+1]:=(sz3[i]+sz1[i]+sz2[i]) div 10; sz3[i]:=(sz3[i]+sz1[i]+sz2[i]) mod 10;end;{加法}for i:=1 to 256 dobeginst3:=chr(sz3[i]+48)+st3;iffac then break;end;{数组→字符串}writeln(st1,'+',st2,'=',st3);readln;end.例2.1.2.1 高精度减法_1program ex(input,output);typearr=array [1..65536] of integer; var st1,st2,st3:ansistring;sz1,sz2,sz3:arr;i:integer;procedure sum(st:string;varsz:arr); vari,code:integer;beginfor i:=1 to length(st) doval(st[length(st)+1-i],sz[i],code); end;functionfac:boolean;var j:integer;beginfac:=true;for j:=256 downto i+1 doif sz3[j]<>0 thenbeginfac:=false;exit;end;end;procedure start;beginfor i:=1 to 256 dobeginsz1[i]:=0;sz2[i]:=0;sz3[i]:=0;end;end;beginstart;readln(st1);readln(st2);sum(st1,sz1);sum(st2,sz2);{字符串→数组} st3:='';for i:=1 to 255 dobeginsz3[i]:=sz3[i]+sz1[i]-sz2[i];if sz3[i]<0 thenbeginsz3[i]:=sz3[i]+10;sz3[i+1]:=sz3[i+1]-1;end;end;{减法}for i:=1 to 256 dobeginst3:=chr(sz3[i]+48)+st3; iffac then break;end;{数组→字符串}writeln(st1,'-',st2,'=',st3);readln;end.例2.1.2.2 高精度减法_2program ex(input,output);type arr1=array [1..65536] of shortint;arr2=array [1..65536] of char;var sz1,sz2,sz3:arr1;s1,s2:arr2;n,m,i:longint;beginfor i:=1 to 65536 do begin sz1[i]:=0; sz2[i]:=0; sz3[i]:=0; end;n:=0;while not(eoln()) dobegininc(n);read(s1[n]);end;for i:=1 to n do sz1[i]:=integer(s1[n+1-i])-48;readln();m:=0;while not(eoln()) dobegininc(m);read(s2[m]);end;readln();for i:=1 to m do sz2[i]:=integer(s2[m+1-i])-48; for i:=1 to n dobeginsz3[i]:=sz3[i]+sz1[i]-sz2[i];if sz3[i]<0 thenbeginsz3[i]:=sz3[i]+10;sz3[i+1]:=-1;end;end;i:=n;while (i>0)and(sz3[i]=0) dodec(i);ifi=0 then writeln(0)elsebeginfor i:=i downto 1 do write(sz3[i]);writeln();end;readln;end.例2.3.1:插入排序programinsert_sort(input,output);vari,j,n,k:integer;a:array[1..100] of integer; beginreadln(n);for i:=1 to n do read(a[i]);readln;for i:=2 to n dobegink:=a[i];j:=i;while (j>=2)and(a[j-1]>k) dobegina[j]:=a[j-1];dec(j);end;a[j]:=k;end;for i:=1 to n do write(a[i]); writeln;readln;end.例3.3.1:先序遍历procedure first(p:point); beginif p=nil then exit;writeln(p^.data);first(p^.left);first(p^.right);end;例3.3.2:中序遍历procedure middle (p : point); beginif p=nil then exit;middle (p^ . left);writeln (p^ . data);middle (p^ . right);end;例3.3.3:后序遍历procedure last (p : point); beginif p=nil then exit;last (p^ . left);last (p^ . right);writeln (p^ . data);end;例3.3.4:树的宽度搜索program BFS(input,output); type point=^node;node = recorddata:integer;left,right:point;end;queue=objectconstmaxn=1000;data : array [1..maxn] of point;front , rear : integer;function empty():boolean;procedure add(n:point);end;functionqueue.empty():boolean;beginexit(front=rear);end;procedurequeue.add(n:point);begininc(rear);data[rear]:=n;end;varhead,p:point;q:queue;begin{输入二叉树。
PASCAL竞赛试题汇编
PASCAL竞赛试题汇编1.s=1+3+5+7……..+992.s=1+2+2^3+2^5+………….+2^633.s=1-1/2+1/3-1/4+1/5…………….-1/1004.s=1*3*5*7………..*17*195.s=1+2+4+8+1024+20486.s=1*2*3+2*3*4+3*4*5+n(n+1)(n+2)7.s=1!+2!+3! (20)8.有一个整数,如果加上100恰好为某数的平方,如果加上156恰好为另一数的平方,求这个数.9.产生100个0到29之间的随机函数,利用紧凑格式打印出这组值,选出其中的素数,并把这些素数按大小排列。
10、有一个五位数,若在它后面写上一个7,得一个六位数A,若在它前面写上一个7,得一个六位数B,B是A的五倍,编一程序,计算出这个五位数是多少?11、从键盘上输入10个自然数,从中分别计算出十位数是1、2、3、4、5……..9的自然数的个数,打印出来。
12、编一程序,把9个自然1-9随意放到二维数组中,并把这个数组按列的上升顺序排序,显示出排序前、后数组。
如:排序前 5 7 3 1 4 72 1 6 2 5 88 9 4 3 6 913、求从1到100之间的3和7的倍数来,分别算出它们数值的和。
14、找出100-999之间的“水仙花”数,所谓“水仙花”数,是指一个三位数,其各位数字的立方和等于该数本身,例如:153=1^3+5^3+3^3。
15、观察下面的序号和算式,编程填出()里的数,并把这个算式打印出来。
序号算式11+2+3=623+5+7=1535+8+11=2447+11+15=3359+14+19=42( ) ( )+( )+7959=( )16、用100元钱买100只鸡,母鸡3元一只,小鸡1元3只,公鸡每只5元,问各应买多少只?17、把一元钞票换成一分、二分、五分硬币(每种至少一枚),有哪些种换法?18、编辑打出四位数,ABCD中满足下述关系的数:(ab+cd)(ab+cd)=abcd19、用1、2、3、4……9九个数(不能重复)组成下列式子:()*()-()=96/()(+()=()求出各种可能方案。
Pascal顺序结构程序设计作业(含答案)
第1题:完善下列程序:问题:给出半径R=100,高H=30,求圆周长、圆面积、圆柱全面积。
源程序:program lx1(input,output);var(1):real;beginlen:=2*pi*r;s:=(2);qs:=len*h+2*s;writeln('len=',len,'s=',sm,'qs=',qs);end.解:我们可以看到变量pi,r,s,qs,len,h均未定义。
则(1)为pi,r,s,qs,len,h由圆面积公式可以很容易得到(2):pi*r*r注:这一题题目有错,pi,r,h变量未定义。
同学们可以自行加上,但不可以不加。
如在begin下加pi:=3.;r:=100;h:=30;第2题:编写一程序,当程序执行时,输入以秒为单位的时间,输出形式为:“小时:分:秒”解:这一题用到两个标准函数:mod和div,mod指取余,div指取整商。
用puts表输入,用hours表小时,用minutes表分钟,用seconds表秒。
程序如下:program name;var puts,hours,minutes,seconds:integer;beginread(puts);hours:=puts mod 3600;puts:=puts div 3600;minutes:=puts mod 60;seconds:=puts div 60;writeln(hours,':',minutes,':',seconds)end.同学们可以看到puts是输入变量,也是临时变量,变了两次值,仔细想想是如何变化的。
第3题:编写一程序,输入一个三位数的正整数,输出时反向输出。
如:输入456,输出654。
解:这一题如果学了数组很简单,没有的话就要用mod和div函数,请同学们在理解上一题的基础上看下面的程序。
program name;var three:integer;beginread(three);for i:=1 to 3 dobeginwrite(three mod 10);three:=three div 10;end;end.本程序用到一个for循环,指循环执行三次。
Pascal百题练习
1、有一数字如下:65436543654365436543………循环排列,(1)输入一个数字n,输出第n个数字。
如输入3则输出为4,输入1则输出为6。
(2)输入一个数字n,在屏幕上输出如题数字,每行30个数字。
(3)输入一个数字n,输出所有数字4所在的位数。
如输入15,输出4所在的位置,即3 7 11 152、有一字符串如下:EDCBAEDCBAEDCBA……..循环排列,(1)输入一个整数n,输出第n位字符。
如输入3输出为C,输入1则输出为E。
(2)输入一个整数n,在屏幕上输出如题字母,每行30个字母。
(3)输入一个数字n,输出所有1-n范围内字母C所在的位数,场宽4。
如输入15,输出D所在的位置,即2 7 123、输入一字符,如该字符为小写字母,则转换成大写并输出;如该字符为大写字母,则转换成小写并输出,如果输入是数字则将该数字转成整数并输出该整数。
否则输出‟Error‟,即错误。
如输入a则输出为A,如输入为B则输出为b,如输入9则转成整数9并输出。
(提示:‟a‟≤小写字母≤‟z‟,‟A‟≤大写字母≤‟Z‟)4、输入三个数,判断这三个数能否作为边长组成三角形,如果能组成则输出TRUE,不能组成三角形则输出FALSE。
5、输入三个数,按从大到小的顺序输出。
如,输入15 20 16 ,输出为20 16 156、输入一个三位整数,输出一个新三位数,使其百位数最大,个位数最小。
如,输入315,输出531。
7、输入四个整数,输出四个数中的最大值和最小值。
(分两行输出)8、输入一个秒数,转换成小时、分、秒并输出。
如输入4500,输出为1:15:0。
9、有鸡兔同笼,现发现有头30个脚90只,试编程算出鸡兔各多少只并输出。
10、有五个好朋友相聚,第一个朋友带来很多糖块赠送给各位好友,使每人的糖块在原来的基础上增加了一倍,第二个朋友也向各位朋友分发糖块,使每人在已有糖块的基础上又增加了一倍,第三、第四、第五位朋友都照此办理,最终每人刚好都有32块糖,请编程算出原来每位好友各有多少糖块。
Pascal百题练习
1、有一数字如下:65436543654365436543………循环排列,(1)输入一个数字n,输出第n个数字。
如输入3则输出为4,输入1则输出为6。
(2)输入一个数字n,在屏幕上输出如题数字,每行30个数字。
(3)输入一个数字n,输出所有数字4所在的位数。
如输入15,输出4所在的位置,即3 7 11 152、有一字符串如下:EDCBAEDCBAEDCBA……..循环排列,(1)输入一个整数n,输出第n位字符。
如输入3输出为C,输入1则输出为E。
(2)输入一个整数n,在屏幕上输出如题字母,每行30个字母。
(3)输入一个数字n,输出所有1-n范围内字母C所在的位数,场宽4。
如输入15,输出D所在的位置,即2 7 123、输入一字符,如该字符为小写字母,则转换成大写并输出;如该字符为大写字母,则转换成小写并输出,如果输入是数字则将该数字转成整数并输出该整数。
否则输出‟Error‟,即错误。
如输入a则输出为A,如输入为B则输出为b,如输入9则转成整数9并输出。
(提示:‟a‟≤小写字母≤‟z‟,‟A‟≤大写字母≤‟Z‟)4、输入三个数,判断这三个数能否作为边长组成三角形,如果能组成则输出TRUE,不能组成三角形则输出FALSE。
5、输入三个数,按从大到小的顺序输出。
如,输入15 20 16 ,输出为20 16 156、输入一个三位整数,输出一个新三位数,使其百位数最大,个位数最小。
如,输入315,输出531。
7、输入四个整数,输出四个数中的最大值和最小值。
(分两行输出)8、输入一个秒数,转换成小时、分、秒并输出。
如输入4500,输出为1:15:0。
9、有鸡兔同笼,现发现有头30个脚90只,试编程算出鸡兔各多少只并输出。
10、有五个好朋友相聚,第一个朋友带来很多糖块赠送给各位好友,使每人的糖块在原来的基础上增加了一倍,第二个朋友也向各位朋友分发糖块,使每人在已有糖块的基础上又增加了一倍,第三、第四、第五位朋友都照此办理,最终每人刚好都有32块糖,请编程算出原来每位好友各有多少糖块。
Pascal算法
算法:
算法是程序的基础。
有了一个好的算法,再进行编码,把算法转换成任何一个程序设计语言所表示的程序。
算法就是解题步骤。
例题:求1——100这一百个相继整数的和S。
解法一:s=1+2+3+……+100 【需要100-1次加法】
解法二:s=(1+100)*50 【需要加法、乘法、除法各一次】不同的算法,对计算的工作量造成重大影响,还要考虑算法对精确度的影响。
程序质量的高低,主要取决于算法。
结构化程序特点:
1按功能相对独立原则划分若干模块。
2 单入口、单出口。
3 强调三种基本结构组成(顺序、选择、循环性)。
4 书写格式清晰。
5 不包含无限循环(即执行时间是有限的)
6 没有死语句(即程序中所有语句都能得到执行的机会)
设计结构化程序方法:
1 自顶向下
2 逐步细化。
3 按“功能单一”原则划分模块。
PASCAL题集
PASCAL题集1、给一个不多于三位的正整数,求出它是几位数,并分别打印出各位上的数字。
vara,b,c,d,e:integer;beginreadln(a);b:=a div 100;c:=(a div 10) mod 10;d:=a mod 10;if b<>0 then e:=3 else if c<>0 then e:=2 else e:=1;writeln(e);if (e=1) then writeln(d)else if (e=2) then writeln (c,' ',d)else writeln(b,' ',c,' ',d);end.2、编写程序求出下式中n的最大值2*2+4*4+6*6+''''''''''+n*n<1500var a,s:integer;begina:=0;s:=0;repeata:=a+2;s:=s+a*a;until s>=1500;writeln(a-2); readln;end.3、古印度国王要褒奖他的聪明能干的宰相达依尔(国际象棋的发明者),问他要什么.达依尔回答:“殿下只要在棋盘(横竖个8行8列,共64个格)的第一个格子中放1粒麦子,在第二个格子中放2粒,在第三格中放4粒,以后每个格子中放的麦粒数都是前一个的两倍.如此放满64格,我就满足了。
”请你计算出输入格数(麦粒数或体积)后的麦粒数和体积(格数和体积或格数和麦粒数)提示:1立方米麦子约为1.42乘以10的8次方varsum,t:double;i,j:longint;begint:=0;for i:=0 to 63 dobeginsum:=1/142000000;for j:=1 to i dosum:=sum*2;t:=t+sum;end;writeln(t:10:10);end. 答案:129906648406.4054、已知一对兔子,每个月可以生一对小兔,而小兔子过一个月后也可以生一对小兔,即兔子的对数是:第一个月1对,第二月2对,第三个月3对,第四个月5对,……假设兔子的生育期是12个月,并且不死, 问一年后,这对兔子有多少对活着的后代?program t0101;constn=12;vari,l,p,x:integer;beginp:=1;l:=2;for i:=3 to n dobeginx:=l+p;p:=l;l:=x;end;writeln('total:',x);readlnend. 答案:即数列1,2,3,5,8……,结果为233。
pascal 练习题
pascal 练习题Pascal练习题Pascal是一种结构化的编程语言,于20世纪70年代由Niklaus Wirth开发。
它以其简洁、易读和高效的特点而闻名。
由于Pascal语言的特殊性质,它被广泛用于教育和训练编程入门者。
本篇文章将为大家呈现一些适用于Pascal编程的练习题。
通过这些练习题,读者们可以增加他们的Pascal编程技能,深入了解Pascal语言的特性与用法。
下面列出了一些练习题,每个练习题都有对应的题目和要求。
练习题一:阶乘计算器题目:编写一个程序,实现阶乘的计算。
要求:用户输入一个正整数,程序将输出该数的阶乘。
练习题二:质数判断器题目:编写一个程序,判断一个数是否为质数。
要求:用户输入一个整数,程序将输出该数是否为质数。
练习题三:字符串翻转题目:编写一个程序,实现字符串的翻转。
要求:用户输入一个字符串,程序将输出该字符串的翻转结果。
练习题四:数列求和题目:编写一个程序,计算数列的和。
要求:给定一个正整数n,程序将计算1到n的所有整数的和。
练习题五:矩阵转置题目:编写一个程序,实现矩阵的转置。
要求:用户输入一个m×n的矩阵,程序将输出该矩阵的转置矩阵。
练习题六:冒泡排序题目:编写一个程序,实现冒泡排序算法。
要求:用户输入一个整数数组,程序将按照升序或降序的方式对数组进行排序。
通过上述练习题,我们可以锻炼Pascal编程的各个方面,包括基本的算术运算、条件语句、循环语句、字符串处理以及数组操作等。
通过编写这些程序,读者不仅可以提高他们的编程技能,还可以更好地理解算法的实现过程。
为了更好地完成这些练习题,以下是一些有用的提示:1. 阶乘计算器:使用一个循环结构,递增一个变量并与用户输入的数相乘,直到达到用户输入的数。
2. 质数判断器:使用一个循环结构,检查除了1和自身以外的数是否可以整除用户输入的数。
3. 字符串翻转:使用一个循环结构,从字符串的末尾开始逐个提取字符,然后将提取的字符逐个连接起来形成新的字符串。
PASCAL语言典型问题及算法实例讲解(学生假期
PASCAL语言典型问题及算法实例讲解(学生假期练习)一、典型问题分析及题解1、数制转换:编程输入十进制N(N:-32767~32767),请输出它对应的二进制、•八进制、十六进制数。
例如: INPUT N(-32767~32767):222222 TURN INTO 2:11011110222 TURN INTO 8:336222 TURN INTO 16:DE[解]十进制数转化为某进制数的转换方法,如下图示:除x逆序取余法十进制数 x进制数(x=2,8,16等)例中n=222(十进制数),转换成x进制数的过程如下图示:(1)十进制数→二进制数(2)十进制数→八进制数(3)十进制数→十六进制数x=2 222 被除数(最大商) x=8 222 6 x=16 222 E (14)102 111 0 低位 8 27 3 16 13 D (13)102 50 1 逆 83 3 02 25 0 余序 02 12 0 数取2 6 0 余2 3 1 数2 1 1 高位0 (最大商为0时停止)将每次所得的余数由下至上排列(逆序取余数),即有:(222)10转换成二进制数得到:1100010(222)10转换成八进制数得到:336(222)10转换成十六进制数得到:13、14这时得到的逆序余数串(在数组B[1]、B[2]、……、B[k]中)的每位数均为十进制数。
程序中利用字符串A来计算x进制数的位数(即COPY(A,B[i]+1,1)),见下表:数组B0 (回车)竖排123 4 (回车)5678 (回车)9101112 (回车)131415字串A0 (回车) 竖排1234 (回车)5678 (回车)9ABC (回车)DEF下标i1 (回车) 竖排234 5 (回车)6789 (回车)10111213 (回车)141516由上表得:(222)10=(1100010)2=(336)8=(DE)16[程序] {$I-} Program jj;var N,k:integer;B:array[1..1000] of integer;Procedure chg10(N,x:integer); {将十进制数N转换成x进制数}Begin k:=0; {转换后的x进制数位的长度}while N<>0 do {N不为0时}begin B[k]:=N mod x; {除以x取余数}N:=N Div x; {取最大商N}k:=k+1; {x进制数位加1}end;end;{chg10}Procedure Sput(N,x:integer);{进制数输出}VAR i:integer; A:string;Begin A:='0123456789ABCDEF'; {表示x进制数的位数串}write(N:6,' Turn into ',x:2,':');for i:=k-1 downto 0 do write(copy(A,B[i]+1,1));{逆序输出x进制数}writeln;end; {Sput}begin {MAIN}write('Input N(-32767 to 32767):');readln(N);if (N<=-32767)or(N>32767) thenbegin writeln('Input error!');halt;end;chg10(N,2);Sput(N,2); {十进制数转换成2进制数,并输出}chg10(N,8);Sput(N,8); {十进制数转换成8进制数,并输出}chg10(N,16);Sput(N,16); {十进制数转换成16进制数,并输出}end.2、找数字对:输入N(2≤N≤100)个数字(在0与9之间),然后统计出这组数中相邻两数字组成的链环数字对出现的次数。
pascal语言部分几个 难题练习》》无代码》
1.“数学黑洞6174”已知:一个任意的四位正整数。
将数字重新组合成一个最大的数和最小的数相减,重复这个过程,最多七步,必得6174。
即:7641-1467=6174。
将永远出不来。
求证:所有四位数的数字(全相同的除外),均能得到6174。
输出掉进黑洞的步数。
要求:(1)当相减后第一次出现6174,就可认为掉进黑洞(2)此题无需输入文件(3)输出文件中,应列出所有四位数(相同的除外)对应的黑洞步数。
2、求数字的乘积根。
正整数的数字乘积这样规定:这个正整数中非零数字的乘积。
例如整数999的数字乘积为9*9*9,得到729;729的数字乘积为7*2*9,得到126;126的数字乘积为1*2*6,得到12;12从数字乘积为1*2,得到2。
如此反复取数字的乘积,直至得到一位数字为止。
999的数字乘积根是2。
编程输入一个长度不超过100位数字的正整数,打印出计算数字乘积根的每一步结果。
输出格式如下:(N=3486784401)348678440151609616201223.构造幻方求解幻方,是把自然数:1,2,3,.....,n*n,填入n*n的方阵里,使得方阵每行、每列、两条主对角线的和等于1/2*n(n*n+1).(n>=3)n称为幻方的阶。
例如下面是一个3阶幻方:492357816我们所要编的程序,就是从键盘输入幻方的阶N,然后打印出这个N阶幻方。
需要注意的是,偶数阶幻方和奇数阶幻方的构造方法可能会有一点不同。
4、苹果树:题目描述xiaoT到了苹果树林,相当激动,他发现苹果树上的苹果一个接着一个有规律的掉了下来,每棵苹果树掉果子的时间间隔是一样的。
Input 第一行是一个正整数n,表示苹果树的个数。
接下来n行,每行四个正整数s,e,T,d,(s=0)(T>0)描述一棵苹果树。
表示第s秒,苹果树第一次掉果子(一个),接着每隔T秒就掉一次,每次掉的个数比前一次掉的多d个,最后一次果子在第e秒掉下(保证第e秒会有果子掉下)。
PASCAL练习题
PASCAL练习题PASCAL练习题序号题目难度完成数1计算路程167 2摄氏温度转华氏温度165 3求一元二次方程的根265 4成绩评定266 5商场折扣268 6倒数数列和357 7阶乘和357 8求最大值和最小值362 9菲波拉契数列354 10求素数347 11百钱买百鸡363 12水仙花数362 13计算π的值355 14最大公约数和最小公倍数458 15完数461 16亲密数对455 17奖学金认定259 18计算年龄261 19汽车时速计算353 20猴子吃桃问题454 21验证哥德巴赫猜想435 22钞票兑换344 23成绩评定2225 24聪明的猪414 25插入排序47 26约瑟夫问题516 27不重复的随机数413 28侦察任务310 29猜数游戏218 30因式分解411 31砝码选择34 32电灯开闭36 33追查凶手34 34十进制转二进制315 35分糖216 36贮油点53 37运动会成绩统计45 38等式填空315 39验证尼科彻斯定理410 40回文字符串217 41中缀表达式转后缀表达式57 42二叉树的遍历313 43留学生应会的语言31 44绝对素数20 45互不相同的七位完全平方数30 46求数字的乘积根50 47纯粹素数30 58完全平方数40 49十六进制数转十进制数20 50楼梯的不同走法50 51计数排序30 52厄拉多赛筛法求素数20 53杨辉三角形30 54打印图形20 55扑克分发30 56统计单词个数40 57二叉排序树20 58按比例组数30 59数字三角形40 60最佳字符编码40 1.计算路程【题目描述】从键盘输入速度v和时间t,要求计算路程s。
2.摄氏温度转华氏温度【题目描述】读入摄氏温度c,将它转换成华氏温度f输出,写出程序。
已知:f=9/5*c+32 3.求一元二次方程的根输入a,b,c,求一元二次方程ax2+bx+c=0的根。
Pascal算法设计题选
算法设计题选一、筛选法1:求1—100间的所有素数。
分析:用筛选法,先把2—100的数存到一个数组中,然后先把2的所有倍数删除掉(即让此数变为0),有一楼房的楼梯级数很奇特,一步跨二级多一级,一步跨三级多二级,如果分用四、五、六、七去除级数分别余三、三、五、五。
问这楼房共有多少级阶梯?(已知不超过400级)。
分析:已知级数不超过400级,我们可仿照求素数的方法,把1—400存进一个数组中,然后这些数用2、3、4、5、6、7分别去除,如果余数分别不为1、2、3、3、5、5就删除它,最后,最小的一个没有被删除的数就是五数之,剩三;七、七数之,剩二。
问物几何?(最小正数解)。
3:狼追兔子,兔子躲进了10个环形分布的洞的某一个中。
狼在第1个洞中没有找到兔子,就间隔1个洞,到第3个洞中去找,也没找到兔子,就间隔2个洞,到第6个洞中去找。
以后狼每次多隔1个洞去找兔子,……。
这样狼一直找不到兔子。
请问兔子可能躲在哪个洞中?分析:该题看似简单,只要每次把狼找过的洞删除就行了,但是,这种删除操作的结束状态(条件)是什么呢?而且,狼的搜索过程中,如果要间隔11个洞时,我们是否可以认为就是间隔1个洞?实际上,第一个问题应该是当狼回到第1个洞,并且又上间隔1个洞去找兔子时,就应该结束删除操作,因为此后的搜索是重复以前的搜索了,此时,那些没有被删除过的洞就是答案。
这里,大家一定不能想当然地认为:结束条件就是只剩下一个洞的时候!题目中并没有说明只有一个答案,事实上是有四个洞的!习题1、作800—1000的素数表。
答案:809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971 977 983 991 9972、一位数学家和一些游客共81人不幸落入强盗手中,强盗把俘虏排成一队,宣布每天处理所有第2的N次方个俘虏(N>=0),而只放走剩下的最后一个。
pascal100练习题
Pascal练习题100道1 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?var i,j,a,b,c:integer;beginfor i:=1 to 4 dofor j:=1 to 4 dofor a:=1 to 4 dofor b:=1 to 4 dobeginif (i<>j) and (i<>a) and (i<>b) and (j<>a) and (j<>b) and (a<>b) then writeln(i,j,a,b);end;end.2 题目:企业发放的奖金根据利润提成。
利润(i)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数?vara:longint;s:real;beginreadln(a);if a<100000 then s:=a*0.1;if a>100000 thenbeginif (a>100000) and (a<=200000) then s:= s + (a-100000)*0.075 + 100000*0.1;if (a>200000) and (a<=400000) then s:=s+(a-200000)*0.05+100000*0.1+100000*0.075;if (a>400000) and (a<=600000) then s:=s+(a-400000)*0.03+100000*0.1+200000*0.05;if (a>600000) and (a<=1000000) thens:=s+(a-600000)*0.015+100000*0.1+200000*0.05+200000*0.03;if (a>1000000) thens:=s+(a-1000000)*0.01+100000*0.1+200000*0.05+200000*0.03+400000*0.015;end;writeln(s:5:2);end.3 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?var i:longint;a,b:real;beginfor i:=1 to 1000000 dobegina:=sqrt(i+100);b:=sqrt(i+268);if ((a*a)=(i+100)) and ((b*b)=(i+268)) then writeln(i);end;end.4 题目:输入某年某月某日,判断这一天是这一年的第几天?var a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a,b,c,d:integer;beginread(a,b,c);a1:=0;a2:=31;a3:=59;a4:=90;a5:=120;a6:=151;a7:=181;a8:=212;a9:=243;a10:=273;a11:=304;a12: =334;if (b=1) then d:=a1 elseif (b=2) then d:=a2 elseif (b=3) then d:=a3 elseif (b=4) then d:=a4 elseif (b=5) then d:=a5 elseif (b=6) then d:=a6 elseif (b=7) then d:=a7 elseif (b=8) then d:=a8 elseif (b=9) then d:=a9 elseif (b=10) then d:=a10 elseif (b=11) then d:=a11 elseif (b=12) then d:=a12;d:=d+c;if (a mod 1000=0) and (c mod 400=0) and (b>3) then d:=d+1;if (a mod 1000<>0) and (c mod 4=0) and (b>3) then d:=d+1;writeln(d);end.5 题目:输入三个整数x,y,z,请把这三个数由小到大输出。
pascal语言笔试题及答案
pascal语言笔试题及答案pascal语言笔试题及答案pascal语言笔试题及答案一、单选题(每小题2分,共60分)1、在结构化程序设计中所说的程序的三种基本结构是指()。
a)主函数、函数、过程b)顺序、选择、循环c)程序首部、说明部分、语句部分 d) while、repeat、for2、以下各组运算中运算优先级最低的一组是()。
a) +,-,orb) *,/c) div, mod,andd) >=, in3、数学表达式sin(60o)的正确pascal表达式是 ()。
a) sin(60)b)sin(3.14159*60)c) sin(3.14159*60/180)d)sin(60*3.14159/360)4、下列表达式中正确的是()。
a) 8/2 mod 2b)not(1=0) and(32)c)\a\+2d) 2+false5、当n为任意正奇数时,值总为true的表达式是()。
a) n mod 2=0b) n div 2=1c)n-(n div 2)=1d)n-trunc(n/2)*2=16、表达式pred(chr(ord(\a \)+4))的值是 ()。
a) \c \b)\d c)69d) 707、下列表达式值为5的是()。
a) pred(8 div2)b) abs(round(23/4))c) su(trunc(22/(26 mod7)))d) ((8 mod 5)*3+1) div 38、下面变量说明中错误的是()。
a) var s:set of char;b)var s:set of integer;c) var s:set of1..100;d) var s:setof(sun,mon,tue,wed,thu,fri,sat);9、不能作为for语句循环控制变量的是下列哪种类型变量()。
a) 整型b) 布尔型c) 实型d) 字符型10、至少被执行一次的循环语句是()。
a) for语句b) repeat-until语句c) while语句d) for、repeat-until和while语句11、下面关于for循环不正确的叙述是()。
Pascal 语言练习题
Pascal 语言练习题一、Pascal 语言1. Pascal语言规定,程序一律以保留字___________开始,作为程序标志。
5. 结构化程序设计的3种基本结构是_________、_________、_________。
9. 表达式PRED(CHR(ORD(′E′)+1))的值为___________。
11. 将一万分之一写成Pascal数的形式应为___________。
14. Pascal语言的数据类型按其特点可分3大类,即_____________类型,___________类型和___________类型。
15. 将65526.0034写成Pascal数的形式应为___________。
22. 表达式ORD(′6′)>=ORD(6)的值是___________。
二、基本语句和顺序结构1. 请写出把256.0赋给整型变量I的赋值语句是___________。
2. 设I为整型变量,L为布尔型变量(l:boolean),odd函数是判断一个数是否为奇数,如odd(5)=true,语句L:=ODD(I) OR ODD(I+1);执行后L的值为___________。
3. 以下程序的运行结果为___________。
PROGRAMEX(OUTPUT);VARA,B,C,N,SUM:INTEGER;BEGINN:=126;A:=N DIV 100;B:=(N-A*100) DIV 10;C:=N-A*100-B*10;SUM:=A+B+C;WRITELN(′SUM=′,SUM:3)END.4. 有以下程序:PROGRAM P1(input,output);VAR ch:char;BEGINREADLN(ch);writeln(pred(pred(ch)),pred(ch),ch,succ(ch) ,succ(succ(ch)))END.假设输入字母C,则输出为___________。
6. 表达式trunc(-sqrt(sqr(17 MOD 5)*2*(15 DIV 2)+sqr(1/2)))的值是__________。
PASCAL程序设计习题
PASCAL 程序设计习题一、数字类:1. 计算1+2+3+……+100,并输出和。
2. 计算1×2×3×4×……×10,并输出积。
3. 计算1-2+3-4+5-……+99-100,并输出结果。
4. 求2x 2+4x+2=0中x 的值。
5. 输入年份,输出该年一共有多少天。
6. 运输公司对用户计算运费。
距离(s )越远,每公里运费越低。
标准如下: s <250km 没有折扣250≤ s <500 2%折扣500≤ s <1000 5%折扣1000≤ s <2000 8%折扣2000≤ s <3000 10%折扣3000≤ s 15%折扣要求输出基本运费、货物重量以及距离,输出总费用。
7. 输入三个整数,要求按从大到小顺序输出。
8. 输入10个整数,要求按从小到大顺序输出。
9. 输入一个数,判断是否是素数。
10. 输入两个正整数,求最大公约数和最小公倍数。
11. 打印所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一水仙花数,因为153=13+53+3312. 输出100-999中,符合下面条件的整数,它既是平方数,又有两位数字相同,例如:144和676等。
13. 输出11至999之间的数m ,它满足m 、m 2、m 3皆为回文数。
14. 输出满足下列条件的三位数。
百位数字减十位数字再减个位数字大于零。
15. 输出200以内,既能被5整除同时又能被7整除的奇数。
16. 用随机函数产生20个两位数,按从大到小顺序输出。
17. 输入一个整数,打印出它是奇数还是偶数。
18. 输入一个不多于5位的正整数,输出它是几位数,并分别打印出每位的数字。
二、字符类1. 输出如下图形########### ######### ####### ##### ### #2. 把输入的字符加密输出密文,加密方法:A →B 、a →b 、Z →A 、z →a ,数字1→2、9→0,其它标点不变。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法应用综合测试(二)
(作答时间:3小时)
说明:1、作题前先在D盘新建一个文件夹,以自已的“学校+姓名”命名
2、各程序的源文件名、输入输出文件见题目
第一题杨辉三角(yh.pas)
【问题描述】
输出杨辉三角第n行。
【输入数据】
一个整数n,表示要输出杨辉三角的第n行。
【输出数据】
一行,杨辉三角的第n行,两个数之间用空格隔开。
【数据范围】
对于30%数据,0<n<10;
对于100%数据,0<n<50.
第二题亲和数(amicable.pas)
【问题描述】
某一天,tenshi看了一本趣味数学书,上面提到了亲和数:定义数对 (x,y) 为亲和数对当且仅仅当x、y为不同正整数,且x、y各自的所有非自身正因子之和等于另一个数。
例如 (220,284) 和 (280,224) 都是亲和数对,因为:
220的所有非自身正因子之和为:1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284
284的所有非自身正因子之和为:1 + 2 + 4 + 71 + 142 = 220
数对 (x,y ) 跟 (y,x) 被认为是同一数对,所以我们只考虑 x<y 的情况。
任务:tenshi对某个范围内的亲和数对的数量非常感兴趣,所以希望你能帮她编写一个程序计算给定范围内的亲和数对的数量。
给定一个范围A到B,如果A≤ x ≤ B,则我们称 (x,y)在范围[A,B]内。
【输入格式】
输入文件名:Amicable.in,从文件的第一行分别读入正整数A和B,其中A、B满足
1 ≤ A ≤ B ≤108
【输出格式】
输出文件名:Amicable.out,输出文件只有一行,就是[A,B]内亲和数对的数量
【样例输入】
200 1200
【样例输出】
2
注:[200,1200] 内的数对只有两个,分别是(220,284)和(1184 1210)
【数据规模】
对于60%的数据,2<=A、B<longint;B-A<10000;
对于100%的数据,2<=A、B< longint; B-A<100000。
第三题数的查找(seek.pas)
【问题描述】
对于给定的N个元素表,要求从中找出第K小的元素.
输入:
第一行是总数N和K,
以下若干行共N个的元素,每行最多20个元素.
输出:
第K小的数.
【输入文件】
输入文件名为:seek.in,第一行有两个数N、K(2<N、K<10000000),N为要找的数总个数,K为要找的第K小数的元素;
以下若干行为N个元素表;(每行最多30个元素)
【输出文件】
输出文件名为:seek.out,一行,为在元素表中找的到第K小素.
【样例输入1】
5 3
23 8 91 56 4
【样例输出1】
23
【样例输入2】
5 3
23 4 1 56 4
【样例输出2】
4
【数据规模】
对于40%的数据,2<=N、K<integer;
对于100%的数据,2<=N、K<longint;
第四题两只塔姆沃斯牛
【问题描述】
两只牛在森林里故意走丢了。
农民John开始用他的专家技术追捕这两头牛。
你的任务是模拟他们的行为(牛和John)。
追击在10x10的平面网格内进行。
一个格子可以是:
∙一个障碍物,
∙两头牛(它们总在一起), 或者
∙农民John.
两头牛和农民John可以在同一个格子内(当他们相遇时),但是他们都不能进入有障碍的格子。
一个格子可以是:
∙. 空地
∙* 障碍物
∙ C 两头牛
∙ F 农民John 这里有一个地图的例子::
*...*..... ......*... ...*...*.. .......... ...*.F.... *.....*... ...*...... ..C......* ...*.*.... .*.*......
牛在地图里以固定的方式游荡。
每分钟,它们可以向前移动或是转弯。
如果前方无障碍且不会离开地图,它们会按照原来的方向前进一步。
否则它们会用这一分钟顺时针转90度。
农民John, 深知牛的移动方法,他也这么移动。
每次(每分钟)农民John和两头牛的移动是同时的。
如果他们在移动的时候穿过对方,但是没有在同一格相遇,我们不认为他们相遇了。
当他们在某分钟末在某格子相遇,那么追捕结束。
开始时,John和牛都面向北方。
【输入文件】
文件名: ttwo.in,共10行,每行10个字符,如上文描述的地图。
【样例输入】
*...*.....
......*...
...*...*..
..........
...*.F....
*.....*...
...*......
..C......*
...*.*....
.*.*......
【输出文件】
文件名:ttwo.out,输出一个数字,表示John需要多少时间才能抓住牛们。
输出0,如果John无法抓住牛。
【样例输出】
49。