2015 年数学会考真题及答案
1,分析并完善程序:
考拉兹猜想:又称为 3n+1 猜想,指的是对于给定的每个正整数 n,经过一系列的有限次变化
后,最终都能变为了:
如果它是偶数,则对它除以 2,如果它是奇数,则对它乘 3 再加 1;……
如此循环,直到得到位为止。例如:n=6,根据上述需要 8 次变换后得 1,变换过程:
6---3---10---5---16---8---4---2---1。以下是验证考拉兹猜想的主要程序片段,请你补
全代码,
Dim
Dim
n=Val(InputBox(“n=”))’输入正整数 n
cnt=0
Do While n>1
Long ’变换次数 cnt
Long
As
n
cnt AS
cnt=cnt+1
If n
Mod
‘变换次数累加
2=0 Then
n=___n/2___
Else
n=__3*n+1____
end if
‘输出变换次数
Loop
Print cnt
2,输入一个正整数 n,判断该正整数是否为素数(质数)。要判断一个数 n 是否为素数,最
简单的方法是,统计 2 到 n-1 之间的所有能整除 n 的整数个数 s,若 s 大于 0,则 n 不是素
数,否则是素数,根据以上方法,完善以下程序代码:
N= val(InputBox(“n=”)
S=0
For i=2 to n-1
If
n
mod
i=0
Then
S=__s+1____’统计因数个数
Endif
Next i
If____s=0________Then
Print n &”是素数“
Else
Print n &”不是素数“
End if
3,VB 语言中绘制圆的方法是:Circle(x,y),r
格式说明:其中(x,y)为圆心坐标,r 为圆的半径。下表中算法 1 是在窗体中绘制以(2000,
2000)为圆心,半径依次为 100,200,……,800 的 8 个同心圆。请补充完成算法 2,使其实
现与算法 1 相同的功能。(6 分)
算法 1
Cicle(2000,2000),100
Cicle(2000,2000),200
算法 2
Dim k As Integer
For
k= 1
to
8
Cicle(2000,2000),300
Cicle(2000,2000),400
Cicle(2000,2000),500
Cicle(2000,2000),600
Cicle(2000,2000),700
Cicle(2000,2000),800
Cicle(2000,2000),___k*100___________
Next k
4,“完数”是指一个自然数恰好等于它的因子(不包含本身)的和,如 6 的因子为 1,2,3,
而 6=1+2+3,因而 6 就是“完数”,如 28=1+2+4+7+14
问题:输入一个正整数 n,判断该数是否为“完数”
要判断一个整数 N 是否为“完数”,最简单的方法是:
求出现 1 到 n-1 之间 n 的所有因子和为 sum,如果 sum 的值和 n 的值相同,则 n 就是完数。
以下代码是判断 n 是否为完数的程序片段,请补全代码:
Dim n as long
Dim sum as long 量级 ‘SUM 用来记录 N 的因子和
Sum=0
N= inputBox(“n=”)
For
I = 1 to n-1
‘求 N 的因子和 SUM
sum = _sum+i________
i = 0 then
mod
If n
Next I
If ___sum=n_____ then
Print
n & “是完数”
Else
Print
n &” 不是完数”
5,2005 年 10 月 9 日,国家测绘局正式宣布珠穆朗玛峰的高度是 8848.43 米,并停用之前的
数据,现有一长白纸的厚度大约是 0.08 毫米,对折一次,厚度变为 0.16 毫米,……,每
对折一次,厚度变为折前的两倍。
假设这长纸足够大,可对折任意次,那么这张纸至少对折多少次后,其厚度将超过珠穆朗
玛峰的高度。以下是求解该问题的程序片段,请补全代码:
Dim height as double ‘定义珠穆朗玛峰的高度
Dim h as double
Dim cnt as long
Height=8844430
H=0.08
Cnt=__0________
Do
‘定义一张纸的厚度
‘定义对折次数
h
If
then
d>0
X1=(-b+sqrt(d))/(2*a)
X2=(-b-sqrt(d))/(2*a)
Print “x1=”;x1
Print”x2=”;x2
End if
If ___d=0_____then
Print “x=”;-b/(2*a)
Endif
If d<0 then
Print “无实数解!”
Endif
7,选择算法解决问题;在使用计算机解决问题时,选择合适的算法是有效解决问题的关键。
分析下面的问题,请选择合适的算法:____穷举法_______(填:解析法/穷举法/递归法/排
序法,6 分)
搬砖问题:100 块砖,100 人搬,一个男人搬 4 块,一个女人搬 3 块,两个小儿抬 1 块,要
求一次全搬完,问需男、女、小儿各多少人。
8,分析下面的问题,选择合适的算法(填:解析法/递归法/穷举法/排序法)____递归法
________
猴子吃桃问题:小猴有一天摘了若干个桃子,它非常贪吃,当天就吃掉了一半还多一个,
第二天接着剩下的一半多一个,以后每天都是如此,到了第七天要吃桃子时,却发现只剩
下 1 个,问小猴子那天一共摘了多少个桃子。
9,分析程序,得出结果:
Dim sum as long
Dim
as long
Sum=0
I=0
Do while sum<10
I
I=i+1
Sum=sum+i*i
Loop
Print sum
运行结果是:___14______
10,分析程序,得出结果
Dim n as long
Dim s as long
Dim x as long
N=val(inputbox(“n=”))
S=0
Do while n>0
X=n mod 10
S=s+x
N=n\10
Loop
Print s
程序运行时,输入 518,运行输出结果是:________14__________(6 分)
(提示:\(整除运算)如:237\10=23;mod(取余数运算)如:237 mod 10=7)
11,分析程序,得出结果
Dim sum as integer
Dim k
as integer
Sum=0
For k=1 to 10
If k mod 2=0 then sum=sum+k
Next k
Print sum
程序运行后输出结果是:_____30____
12,分析程序,得出结果
Dim x as integer
Dim y as integer
Y=0
For I =1 to 5
X=val(inputbox(“请输入”)
Y=y+x
Next I
Print y
程序运行后,依次输入:10
运行输出的结果是:_____150________(6 分)。
13,程序段:
for I =1 to 10
for j=1 to I
print “*”
‘I 控制*的行数
‘J 控制每行*的个数
‘输出*
20
30
40
50
next j
print
‘输出换行
next i
运行结果是_____D_____(填:A/B/C/D)
A
B
C
D
14,在 VB 语言中常用的字符串截取函数有:
函数名
功能
Mid(s,m,n)
从字符串 S 的第 M 位开始,截取长度
为 N 的子串
示例
结果
Mid(“ABCDEFG”,5,2) “EF”
Left(s,n)
截取字符串 S 左边 N 个字符
Left(“ABCDEFG”,3) “ABC”
Right(s,n)
截取字符串 S 右边 N 个字符
Right(“ABCDEFG”,2) “FG”
假如某人身份证号码 s=’’370102199602190000”,如果需要根据此身份证号码求出该人的
“出生年月日”。下列四个表达式中不能实现的一个是_____D_____.
A. mid(s,7,8)
C.mid(s,7,4)+mid(s,11,2)+mid(s,13,2)
B.right(left(s,14)8)
D.Left(s,14)-left(s,6)
15,下图所示的算法流程图:(6 分)
执行情况如下:当输入 a,b 的值为 3、8 时,输出结果为 5
当输入 a,b 的值为 11、7 时,输出结果为 4
开始
输入 a,b 的值
输出 c 的值
结束
问题一:下列流程图填入虚线框中,符合条件的是:____C_____(填:A/B/C)
N
c=b-a
ab
Y
c=a-b
A
C
N
c=a-b
a>b
Y
c=b-a
B
问题二:依据问题一所选流程图,当输入 a,b 的值分别为 9,6 时,输出结果为______3_____。