关键词不能为空

当前您在: 主页 > 高中公式大全 >

圆柱体底面积公式程序方案试题汇编(答案)

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2020-09-12 11:51
tags:海伦公式

北京传媒学院-铜和硝酸银反应现象


个人资料整理 仅限学习使用
程序设计试卷及答案

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

<经常碰到的判断是否为素数、是否为回 文数、求两个数的最大公约数、求两个数的最小公倍数等问题的子
函数源程序,请务必记住!)

①判断是否为素数,若是素数则返回true,若不是素数则返回false:
function prime(x:longint>:boolean。
var
j,y:longint。
begin
prime:=true。
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、83、89、97。<共25个)

②判断是否为回文数,若是回文数则返回true,若不是回文数则返回false:

function huiwen(n:longint>:boolean。
var
m,i,j:longint。
a:array[1..10] of integer。
begin
if n<0 then begin huiwen:=false。 exit。 end。
m:=n。 i:=0。 huiwen:=true。
repeat
i:=i+1。
a[i]:=m mod 10。
m:=m div 10。
until m=0。
for j:=1 to (i div 2> do
if a[j]<>a[i-j+1] then
个人资料整理 仅限学习使用
begin huiwen:=false。 exit。 end。
end。
③求最大公约数子函数,返回两个正整数的最大公约数,采用辗转相除法算法;
function gcd(a,b:longint>:longint。
begin
if b=0 then gcd:=a
else gcd:=gcd(b,a mod b>。
end。
④求最小公倍数:lcm=a*b div gcd(a,b>。
<以下程序设计试卷来自《奥赛经典<语言篇)》)
第2章 基本语句与程序结构
例题部分:
1、 求梯形的面积。<梯形面积公式:
<★,测试数据①
2、 求一元二次方程ax
2
+bx+C=0的两个实根。<求根公式:
<★ ,测试数据a=1,b=-5,c=6;答案:x
1
=2、x
2
=3)
3、 输入一个三位的自然数,然后把这个数的百位与个位对调,输出对调后的结果。 <★)
4、 输入三个数a、b、c,首先判断这三个数能否构成三角形,若能,则求出三角形的面积。
<提示:海伦公式,其中,a、b、c为边长)


<★,If条件语句,测试数据a=5,b=6,c=7;答案:14.7)
5、 从键盘读入三个数,按从大到小的顺序把它们打印出来。<★,If条件语句)
6、 输入三角形的三边,判断它是否是直角三角形。
<★,If条件语句,测试数据①3、4、5;②4、5、6;答案①Yes;②No)

7、 编写一个根据用户键入的两个操作数和一个运算符,由计算机输出运算结果的程序。<★★★)
8、 输入一个年号,判断它是否为闰年。
<★,If条件语句,测试数据①1900;②2 000;③2008;答案:①No;②Yes;③Yes)

9、 编程计算S=1+2+3+…+100。<★,循环语句, 答案:5050)
相关练习:<1)
<3)
; <2)
; <4)


<相关练习答案:<1)5.19<保留2为小数);<2)338350;<3)255 0;<4)1717)
10、根据公式,计算圆周率的π值。
<★★,循环语句,测试数据n=10000;答案:3.1414971639)
program e。
var
i:longint。
s:real。
begin
writeln。 s:=0。
for i:=1 to 10000 do s:=s+1(i*i>。
writeln(sqrt(6*s>>。
end.
11、计算n!。<★★,循环语句,10!=3628800)
12、
已知一对兔子,每个月可以 生一对小兔,而小兔过一个月后也可生一对小兔。即兔子的对数是:第
一个月1对,第二个月2对,第三 个月3对,第四个月5对,……,假设兔子的生育期是12个月,并
且不死,问一年后,这对兔子有多少 对活着的后代?
<★★,循环语句, 1、2、3、5、8、13、21、34、55、89、144、233;答案233)
13、 求两个整数a与b的最大公约数和最小公倍数。
个人资料整理 仅限学习使用
<★,循环语句、If条件语句,测试数据16和24,最大公约数8,最小公倍数48)
14、 利用格利高公式求π。,直到最后一项的值小于10为止。
-6
<★★★,循环语句) <答案: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:=fhn。 s:=s+t。 n:=n+2。 fh:=-fh。 end。
p:=4*s。
writeln('pi=',p>。
end.
相关练习:利用公式,求π。
<计算前10000项时,答案为3.1415426536)
program e。
var
i,a,b:longint。
x,s:real。
begin
writeln。 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.
3333
15、
求100~999中的水仙花数。<若三位数A BC,ABC=A+B+C,则称ABC为水仙花数。例如153,1
+5+3=153,则153是水 仙花数。)
33
<★
★,循环语句)

<答案:153、370、371、407)
program e12。
var
i,a,b,c:integer。
begin
writeln。
for i:=100 to 999 do
begin
a:=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、 试编写能够打印输出如下图形的程序。
<★★,循环语句)
AAAAAAAAA
AAAAAAA
AAAAA
AAA
A
program e。
const n=5。
var
i,j:integer。
begin
writeln。
for i:=1 to n do
begin
write('':i>。

个人资料整理 仅限学习使用
for j:=1 to (n-i>*2+1 do write('A'>。
writeln。
end。
end.
17、 四个学生上地理课,回答我国四大淡水湖大小时这样说:
<★★★)
甲:“最大洞庭湖,最小洪泽湖,鄱阳湖第三。”
乙:“最大洪泽湖,最小洞庭湖,鄱阳湖第二,太湖第三。”
丙:“最小洪泽湖,洞庭湖第三。”
丁:“最大鄱阳湖,最小太湖,洪泽湖第二,洞庭湖第三。”
对于每个湖的大小,每个学生仅答对一个,请编程确定四个湖的大小。

习题部分:
1、 已知三角形的两边a、b和夹角jc的值,求第三边<已知条件由键盘输入)。
<提示:余角公式)
<测试数据:输入a=3、b=4、jc=90; 输出5)
program e2_5。
var
a,b,c,jc:real。
begin
writeln('input a,b,jc:'>。 readln(a,b,jc>。
c:=sqrt(a*a+b*b-2*a*b*cos(pi*jc180>>。
writeln(c:8:2>。
end.
2、 编写程序把一个四位整数3581颠倒成1853。
<★)
program e。
const n=3581。
var
a,b,c,d:integer。
begin
writeln。
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.
相关练习:任意输入一个正整数,颠倒输出该数。
program e。
var
n:longint。
begin
writeln。 writeln('input a integer number:'>。 readln(n>。

repeat
write(n mod 10>。 n:=n div 10。
until n=0。
end.
3、 输入a、b、c三个数,打印出最大者。
If条件语句)
program e。
var
a,b,c:real。
begin
writeln('input three number for a,b,c:'>。
readln(a,b,c>。
if (a>b>and(a>c> then writeln(a>。
else if (b>a>and(b>c> then writeln(b>。
else writeln(c>。
end.

<★)

<★,
个人资料整理 仅限学习使用
4、 从键盘读入两个数,比较其大小,把大数置于x,小数置于y。请设计实现该功能的程序。
<★,If条件语句)<程序略)
5、
输入三个数,判断以这三个数为边能否组成 一个三角形。若不能,则给出适当信息;若能,则进一
步判断它们构的是锐角三角形、直角三角形还是钝 角三角形,并
输出其特征<等边、等腰、直角、一般)、求其面积。
<★★,If条件语句)

<算法分析:对于判断是锐角、直角、还是钝角三角形,只需判断最 大边的平方与其余两边的平方
和的大小比较即可,小于则为锐角、等于则为直角、大于则为钝角。)
<测试数据:①1、2、3;②3、4、5;③)4、4、7;④5、5、5;
答案:① No;②直角、面积6.00;③钝角、等腰、面积6.78;④锐角、等边、面积10.83)

program e。
var
a,b,c,t,s,d,ja,jb,jc:real。
begin
writeln('input three number for a,b,c:'>。
readln(a,b,c>。
if a if a if (a then
begin
if (a*a 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<>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>。

end
else writeln('NO!'>。
end.
6、
设我国目前的人口为11亿,且 每年的增长率为1.5%。问多少年后,我国的人口会翻一番?<★)
<答案:47)

program e2_22。
var
i:integer。
s:real。
begin
writeln。 s:=11。 i:=0。
while s<22 do
begin 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+}
var
i:integer。
x,y,z:extended。
begin
writeln。 x:=0。 y:=1。 write(x:20:0,y:20:0>。
for i:=3 to 50 do
begin z:=x+y。 write(z:20:0>。 x:=y。 y:=z。 end。
end.
8、 编写程序求出下式中n的最大值:2
2
+4
2+6
2
+…+n
2
<1500。 <★★,循环语句)
<答案:18)
program e2_24。
var

个人资料整理 仅限学习使用
n,s:integer。
begin
writeln。
s:=0。 n:=0。
while s<1500 do
begin inc(n,2>。 inc(s,n*n>。 end。
writeln(n-2>。
end.
9、 把一元的钞票换成一分、二分和 五分的硬币<每种至少一枚),问有多少种兑换方法?<★★)<答
案:461)
program e2_29。
var
i,j,k,ans:integer。
begin
ans:=0。
for k:=1 to 19 do
for j:=1 to 47 do
for i:=1 to 93 do
if (k*5+j*2+i>=100 then inc(ans>。
writeln(ans>。
end.
10、 编写程序求最小正整数m、n<0m
与198 9
n
的最后三位数字相同?
<★★★★)
<算法:这类数字很大且有效数 字位数很多<超出最多有效位数extended数据类型有效数字18
位)的数字问题,一定要另辟蹊 径寻找突破口,注意到此题只要求最后三位数字相同,则我最
多保留最后四位有效数字即可进行判断。还 请记住这样一个事实,如1989×1989=
3956121,3956121×1989=7868 724669,最后四位数字是“4669”,而我把3956121
取其最后的四位数“6121”与 1989相乘即6121×1989=12174669,最后四位数字也是
“4669”,没有破坏最 后四位有效数字的值,因此可以通过这种方法来编写此程序。)

<答案:m=51; n=1);
program e。
var
m,n,i,j:integer。
x,y,a,b:longint。
begin
writeln。
for m:=2 to 60 do
for n:=1 to m-1 do
begin
x:=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 e。
var
count,x:integer。
begin
writeln。 writeln('input integer number(0--end>:'>。 count:=0。

repeat
read(x>。
if x>0 then inc(count>。
until(x=0>。
writeln('count=',count>。
end.
12、 求自然常数的值。<提示:0!=1,1!=1) <★
个人资料整理 仅限学习使用
★)
(1) 直到第50项;<2)直到最后一项小于10
-5

<答案:<1)2.705E+0000; <2)2.719E+0000)

<备注:第2小问程序略,只须将更改语句“until (1s><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+1s。
until count=50。
writeln(e>。
end.
13、
三齐王点兵的故事。相传 三齐王韩信才智过人,从不直接清点自己军队的人数,只是让士兵先后以
三人一排、五人一排、七人一排 地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了<不超
过100人)。输入三次排尾的人数, 输出总人数。 <★★)

program e2_36。
var
a,b,c,i:integer。
begin
writeln('shu ru p3(0~2>,p5(0~4>,p7(0~6> de wei shu:'>。

readln(a,b,c>。
for i:=100 downto 1 do
if (i mod 3=a>and(i mod 5=b>and(i mod 7=c> then writeln(i>。

if i=1 then writeln('No answer!'>。
end.
14、 < br>编写程序,计算N!以十进制数形式表示的数中最右的非零数字,并找出在它右边有几个零。例如
12!=1×2×3×…×12=479001600。因此12!的右边有2个零。 <★★★)

234
<提示:碰到5、5、5、5
…才会出现末尾是零,所以1000!末尾零的个 数为:
<1000 div 5)+<1000 div 5
2
)+<1000 div 5
3
)+<1000 div 5
4
)=249)

<下面的程序没采用上面的算法,采取另一种算法实现了这一程序,显然上面的算法效率高)
<程序算法:只需提供末尾几位有效数字即可,我采取提供四位有效数字相乘)
program I_11。
var
s:longint。
i,d:integer。
begin
writeln。
d:=0。 s:=1。
for i:=1 to 1000 do
begin
s:=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、 编写程序,输出“字母塔”。以此类推共26层。 A
<★★)
ABA
ABCBA
……………
program e2_40。
var
个人资料整理 仅限学习使用
i,j:integer。
begin
writeln。
for i:=1 to 26 do
begin
for 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。
var
a:array[1..10] of integer。
i,j,t:integer。
begin
writeln('input ',n,' integer number:'>。
for i:=1 to n do read(a[i]>。
for i:=1 to n-1 do
for j:=1 to n-i do
if a[j]>a[j+1] then begin t:=a[j]。 a[j]:=a[j+1]。 a[j+1]:=t。 end。

for i:=1 to n do write(a[i]:5>。
end.
2、 折半查找。<二分法查找)
<★★)
3、
旅馆里有一百个房间,从1到100编了号。第一个服务员 把所有的房间门都打开了,第二个服务员把
所有编号是2的倍数的房间“相反处理”,第三个服务员把所 有编号是3的倍数的房间作“相反处理”,
……,以后每个服务员都是如此。问第100个服务员来过后 ,哪几扇门是打开的。<所谓“相反处理”
是:原来开着的门关上,原来关上的门打开。) <★★)

<提示:对于任何一个编号,例如8,它的因子只有1、2、4、8,并且成对出现 ,当此数的因子数
为偶数个时将被关上,当此数的因子数为奇数个时才会被打开。考虑到因子成对出现的 情况,因此
只有平方数的因子是奇数个的,所以门被打开的只能是平方数的房间,如1,4等)

4、 编写程序把任意十进制整数转换成二进制整数。
<★★)
22
5、
所谓“幻方”,是一个行、列为奇数的方阵,把1~n这n个不同的数放入 方阵中,使方阵的每行、每
列和每个对角线上的元素的和全部相等。下面给出幻方的一种排列方法:
(1) 先把1放在第一行的中间位置;
(2) 下一个数放在上一个数的右上方;
(3) 若右上方已超出方阵的第一行,则下一个数放在下一列的最后一行上;
(4) 若右上方已超出方阵的最后一列,则下一个数放在上一行的第一列上;
(5) 若右上方已经有数,或右上方已超出方阵的第一行最后一列,则下一个数放在上一个数的
正下方。
编写程序,对输入小于15的n,打印出相应的幻方。 <★★
★)
6、 在一个字符数组LET中形成由A开始的连续26个大写字母构成的字串,并将其倒置后仍放在LET中。
7、 随机输入一个长度不超过255的字符串,将其倒置后输出。
8、 随机输入一些国家的英文名字,以end作为输入结束标志,按字母顺序排序后输出。
9、 求n个字符串的最长公共子串,n<20,字符长度不超过255。
例如n=3,由键盘依次输入三个字符串为:
what is local bus?
Name some local bus.
Local bus is high speed IO bus close to the processor.

个人资料整理 仅限学习使用
则最长公共子串为“local bus”。
10、 文本的整版。编写一个程序,从键盘以任意的方法输入句子,然后打印出来。打印时每行宽度必须
为 n个字符。如果一行的最后一个单词超出了本行n个字符的范围,则应把它移到下一行去。输入
一个句子 测试你的程序。


习题部分:
1、 输入n个整数,请找出最小数所在的位置,并把它与第一个数对调。 <★)
program e4_2。
var
a:array[1..10]of integer。
i,t,y:integer。
begin
writeln('input ten integer number:'>。
for i:=1 to 10 do read(a[i]>。
t:=a[1]。
for i:=2 to 10 do if a[i] for i:=1 to 10 do
if a[i]=t then begin writeln('the min number is ',i,'th'>。 a[i]:=a[1]。 a[1]:=t。 end。

for i:=1 to 10 do write(a[i]:8>。
end.
2、 用边排序边合并的方法把两个有序数列合并为一个新的有序数列,不得先合并再重新排序。
<★★)
<测试数据:这里a组数据共8个:1 1 3 6 6 7 9 10; b组数据共5个:0 1 2 3 4)

program e4_3。
var
a:array[1..8] of integer。
b:array[1..5] of integer。
c:array[1..13] of integer。
i,j,k,m,n:integer。
begin
writeln('input 8 integer number of square arrayA:'>。

for i:=1 to 8 do read(a[i]>。
writeln('input 5 integer number of square arrayB:'>。

for i:=1 to 5 do read(b[i]>。
j:=1。 k:=1。 m:=a[j]。 n:=b[k]。
for i:=1 to 13 do
begin
if m begin
c[i]:=m。 inc(j>。 m:=a[j]。
if j=9 then m:=maxint。
end
else
begin
c[i]:=n。 inc(k>。 n:=b[k]。
if k=6 then n:=maxint。
end。
end。
for i:=1 to 13 do write(c[i]:4>。
end.
3、 将一个数插入到有序的数列中,插入后数列仍然有序。
<★★)
<测试数据:有序数组为1 1 3 6 6 7 9 10; 待插入数为5)
program e4_4。
var
i,j,n:integer。
flag:boolean。
a:array[1..9] of integer。
begin
writeln('input 8 integer square number:'>。
for i:=1 to 8 do read(a[i]>。
writeln('input a integer number to insert:'>。
个人资料整理 仅限学习使用
readln(n>。
flag:=false。 i:=1。
repeat
if a[i]>n then flag:=true else inc(i>。
until flag=true。
for j:=9 downto i+1 do a[j]:=a[j-1]。
a[i]:=n。
for i:=1 to 9 do write(a[i]:4>。
end.
4、
有N个无序的数存放在A数组中,请将后面相同的数删成只剩下一个 ,并输出经过删除后的数列。

<★★)

<测试数据:数列为1 3 5 3 7 5 3 1; 答案:1 3 5 7)
program e4_5。
var
a:array[1..8] of integer。
i,j,n:integer。
begin
writeln('input 8 integer number:'>。
for i:=1 to 8 do read(a[i]>。
for i:=2 to 8 do
for j:=1 to i-1 do if a[i]=a[j] then a[i]:=maxint。
for i:=1 to 8 do
if a[i]<>maxint then write(a[i]:4>。
end.
5、
有N个人排队到R个相 同的水龙头去打水,他们装满各自水桶的时间T1、T2、…、TN为整数且互不
相等,应如何安排他们 打水的顺序才能使他们花费的总时间最少?<花费的总时间等于每个花费时
间的总和)

6、
求一个五阶方阵中某个元素的位置:它在行上是最小的,在列上也是最小的,如果没有请输出“NO
FIND!”。
<★★★)

<分析:整个 矩阵中的最小值,当然也是所在行和所在列的最小值,因此肯定能找到这样的数)测
试数据: 答案:2、1、3、6

11 4 2 7 8
5 9 23 1 25
3 22 21 18 15
17 16 24 12 6
13 10 19 20 14
program e。

好句好段摘抄大全-年份前用什么介词


近视眼矫正哪种手术好-留学好不好澳洲


电气自动化技术专业介绍-老公生日简单温馨的话


艺术类本科分数线-疫情故事作文


湖北大学专业-一分钟


中秋祝福短信问候语-袁隆平


出国留学需要的条件-上海公安


四级多少分-欲把西湖比西子



本文更新与2020-09-12 11:51,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/392832.html

程序方案试题汇编(答案)的相关文章