计算机历届专升本考试编程题参考答案.docx
《计算机历届专升本考试编程题参考答案.docx》由会员分享,可在线阅读,更多相关《计算机历届专升本考试编程题参考答案.docx(16页珍藏版)》请在冰豆网上搜索。
计算机历届专升本考试编程题参考答案
一、选择结构试题
1.假设邮费计算方法为:
100克以内(含100克)收费5元,超过100克的部分每克加收0.2元。
试编写程序,要求从键盘输入邮寄物品质量,计算并输出邮费。
INPUT“输入邮寄物品质量(克)”TOX
IFX<=100
Y=5
ELSE
Y=(X-100)*0.2+5
ENDIF
?
“邮寄费为”,Y,“元”
2.现有一元二次方程:
ax2+bx+c=0,其中a、b、c是整数,且a≠0。
若存在实根,则输出“在实数范围内有解”;若不存在实根,则输出“在实数范围内无解”。
INPUT“输入A的值(不等于0)”TOA
INPUT“输入B的值”TOB
INPUT“输入C的值”TOC
IFB*B-4*A*C>=0
?
“在实数范围内有解”
ELSE
?
“在实数范围内无解”
ENDIF
3.输入出租车行驶里程S,输出应付车费F。
S和F的关系如下:
INPUT“输入出租车行驶里程”TOS
IFS<=3
F=6
ELSE
F=6+(S-3)*1.5
ENDIF
?
“应付车费为”,F
4.有一函数:
编程序,输入X值,输出Y值
方法一
INPUT“输入X的值”TOX
IFX<1
Y=X
ELSE
IFX<10
Y=2*X-1
ELSE
Y=3*X-11
ENDIF
ENDIF
?
“Y=”,Y
方法二
INPUT“输入X的值”TOX
DOCASE
CASEX<1
Y=X
CASEX<10
Y=2*X-1
OTHERWISE
Y=3*X-11
ENDCASE
?
“Y=”,Y
5.完成下面分段函数的计算,程序运行时用户从键盘输入一个数值X,在屏幕上输出Y值。
INPUT“输入X的值”TOX
IFX>0
Y=X^2
ELSE
IFX=0
Y=0
ELSE
Y=-(X^2)
ENDIF
ENDIF
?
“Y=”,Y
6.某书店开展优惠售书活动,收费方法如下:
0.9x(x≤100)
y=0.8x(100<x≤500)
0.7x(x>500)
其中:
x表示原价,y表示实际收费。
试编写程序,要求从键盘输入x,计算输出y。
INPUT“输入原价”TOX
IFX<=100
Y=0.9*X
ELSE
IFX<=500
Y=0.8*X
ELSE
Y=0.7*X
ENDIF
ENDIF
?
“实际收费为”,Y
7.某商场开展优惠促销活动,购物总额不足100元的不打折;购物总额在100元到500元之间的打9折;购物总额满500元的打8折。
计算公式如下:
其中,x为购物总额,y为应付款。
编写程序输入顾客的购物总额,输出应付款。
INPUT“输入购物总额”TOX
DOCASE
CASEX<100
Y=X
CASEX<500
Y=0.9*X
CASEX>=500
Y=0.8*X
ENDCASE
?
“应付款为”,Y
8.从键盘输入三个整数x、y、z,输出其中最小的数。
对于VFP,可以利用MAX、MIN函数,使这类程序大为简化:
?
MIN(A,B,C)
INPUT“输入第一个整数”TOX
INPUT“输入第二个整数”TOY
INPUT“输入第三个整数”TOZ
SMALL=X
IFY
SMALL=Y
ENDIF
IFZ
SMALL=Z
ENDIF
?
“三个数中最小的整数是”,SMALL
9.从键盘输入三个数,编程求出三个数中的最大数和最小数,并显示输出。
方法一
INPUT“输入第一个数”TOA
INPUT“输入第二个数”TOB
INPUT“输入第三个数”TOC
BIG=A
SMALL=A
IFB>BIG
BIG=B
ENDIF
IFB
SMALL=B
ENDIF
IFC>BIG
BIG=C
ENDIF
IFC
SMALL=C
ENDIF
?
“其中最大数为”,BIG
?
“其中最小数为”,SMALL
方法二
INPUT“输入第一个数”TOA
INPUT“输入第二个数”TOB
INPUT“输入第三个数”TOC
?
“其中最大数为”,MAX(A,B,C)
?
“其中最小数为”,MIN(A,B,C)
10.整型变量a,b,c中分别存放各不相同的数值。
编写程序,实现a,b,c从大到小排序,并以此顺序输出排序后的三个数。
方法一
INPUT“输入第一个整数”TOA
INPUT“输入第二个整数”TOB
INPUT“输入第三个整数”TOC
IFA
T=A
A=B
方法二
INPUTTOA
INPUTTOB
INPUTTOC
BIG=MAX(A,B,C)
SMALL=MIN(A,B,C)
SUM=A+B+C
A=BIG
C=SMALL
B=SUM-BIG-SMALL
?
A,B,C
B=T
ENDIF
IFAT=A
A=C
C=T
ENDIF
IFBT=B
B=C
C=T
ENDIF
?
A,B,C
二、循环结构试题
11.求两个整数m和n的最大公约数。
INPUT“输入一个整数”TOM
INPUT“输入另一个整数”TON
T=MOD(M,N)
DOWHILET<>0
M=N
N=T
T=MOD(M,N)
ENDDO
?
“最大公约数为”,N
12.从键盘输入一个正整数n,编程求出
,即12+22+……+n2,并将结果显示输出。
INPUT“输入一个正整数”TON
SUM=0
FORI=1TON
SUM=SUM+I*I
ENDFOR
?
“SUM=”,SUM
13.试使用循环结构编程计算y=21+22+……210,并输出结果。
Y=0
FORI=1TO10
Y=Y+2^I
ENDFOR
?
“Y=”,Y
14.编程求s=1×2+3×4+5×6+……+99×100的值,并输出结果。
S=0
FORI=1TO100STEP2
S=S+I*(I+1)
ENDFOR
?
“S=”,S
15.根据以下公式计算并输出S的值。
S=0
FORI=1TO100
S=S+1/I
ENDFOR
?
“S=”,S
16.编程输出100~500之间能被7整除的奇数的个数。
N=0
FORI=101TO500STEP2
IFMOD(I,7)=0
N=N+1
ENDIF
ENDFOR
?
“N=”,N
N=0
FORI=100TO500
IFI%7=0ANDI%2=1
N=N+1
ENDIF
ENDFOR
?
“N=”,N
17.求Sn=a+aa+aaa+aaaa……其中a是一个数字,a的个数为n,a和n由键盘输入
INPUT“输入A的值”TOA
INPUT“输入项数N”TON
SN=0
T=A
FORI=1TON
SN=SN+A
A=A*10+T
ENDFOR
?
“数列之和为:
”,SN
18.某班有45名学生参加“专升本”考试。
现要求从键盘输入全班一门课的成绩,输出该课程的平均分、及格人数及其百分比。
SUM=0
N=0
FORI=1TO45
INPUT“输入成绩”TOSCORE
SUM=SUM+SCORE
IFSCORE>=60
N=N+1
ENDIF
ENDFOR
?
“全班平均分为”,SUM/45
?
“及格人数为”,N
?
“及格率为”,N/45*100,“%”
19.编写程序输出所有满足以下条件的三位数:
它是9的倍数,且个位和十位上的数字之和等于百位上的数字。
FORI=100TO999
G=I%10
S=INT(I/10)%10
B=INT(I/100)
IFI%9=0ANDG+S=B
?
I
ENDIF
ENDFOR
20.编写程序输出以下图案(必须利用循环语句控制)
a
bbb
ccccc
ddddddd
ccccc
bbb
a
FORI=1TO4
?
?
SPACE(4-I)
FORJ=1TO2*I-1
?
?
CHR(96+I)
ENDFOR
?
ENDFOR
FORI=3TO1STEP-1
?
?
SPACE(4-I)
FORJ=1TO2*I-1
?
?
CHR(96+I)
ENDFOR
?
ENDFOR
21.编写子程序(或子函数)实现:
1+χ+2χ2+3χ3+…nχn
FUNCTIONJS
PARAN,X
S=1
FORI=1TON
S=S+I*X^I
ENDFOR
RETURNS
ENDFUNC
三、数组试题
22.设有十位评委给某选手打分,以去掉一个最高分和一个最低分后的平均分作为该选手的成绩。
试编写程序,要求从键盘输入评委的评分并存入到数组中,计算并输出选手的成绩。
DIMES(10)
FORI=1TO10
INPUT“输入成绩”TOS(I)
ENDFOR
FORI=1TO9
FORJ=I+1TO10
IFS(I)>S(J)
T=S(I)
S(I)=S(J)
S(J)=T
ENDIF
ENDFOR
ENDFOR
SUM=0
FORI=2TO9
SUM=SUM+S(I)
ENDFOR
?
“平均成绩为”,SUM/8
23.已有按从小到大的顺序排列的10个数,现输入一个数,要求插入到数列中。
插入后数列仍然按从小到大顺序排列。
DIMEA(11)
FORI=1TO10
INPUT"递增输入10个整数"TOA(I)
ENDFOR
INPUT"输入一个待插入整数"TOX
FORI=10TO1STEP-1
IFA(I)>X
A(I+1)=A(I)
ELSE
EXIT
ENDIF
ENDFOR
A(I+1)=X
FORI=1TO11
?
?
A(I)
ENDFOR
24.输入30位学生的成绩,统计并输出每个分数段的人数:
分数段按90分以上(含90分)、80~89分、70~79分、60~69分及60分以下(不含60分)划分。
DIMES(30)
FORI=1TO30
INPUT“输入成绩”TOS(I)
ENDFOR
STORE0TON5,N6,N7,N8,N9
FORI=1TO30
DOCASE
CASES(I)>=90
N9=N9+1
CASES(I)>=80
N8=N8+1
CASES(I)>=70
N7=N7+1
CASES(I)>=60
N6=N6+1
OTHERWISE
N5=N5+1
ENDCASE
ENDFOR
?
“90分以上的人数为”,N9
?
“80分到89分的人数为”,N8
?
“70分到79分的人数为”,N7
?
“60分到69分的人数为”,N6
?
“不及格的人数为”,N5
25.已知三个矩阵A(3×2)、B(2×4)、C(3×4),分别由数组A[3,2]、B[2,4]和C[3,4]表示,请编程实现矩阵乘法,即C=A×B(C(i,j)=A(i,1)×B(l,j)+A(i,2)×B(2,j))。
DIMEA(3,2),B(2,4),C(3,4)
FORI=1TO3
FORJ=1TO2
INPUT“输入数据”TOA(I,J)
ENDFOR
ENDFOR
FORI=1TO2
FORJ=1TO4
INPUT“输入数据”TOB(I,J)
ENDFOR
ENDFOR
FORI=1TO3
FORJ=1TO4
C(I,J)=A(I,1)*B(1,J)+A(I,2)*B(2,J)
ENDFOR
ENDFOR
FORI=1TO3
FORJ=1TO4
?
?
C(I,J)
ENDFOR
?
ENDFOR
26.有一个3×5的矩阵,试编写程序,要求从键盘上输入数据,求其中数值最大的那个元素,然后输出该元素值及其所在的行号和列号(不考虑数据有相同的情况)。
dimea(3,5)
fori=1to3
forj=1to5
input“输入数据”toa(i,j)
endfor
endfor
big=a(1,1)
row=1
col=1
fori=1to3
forj=1to5
ifa(i,j)>big
big=a(i,j)
row=i
col=j
endif
endfor
endfor
?
“最大数为”,big
?
“最大数所在行为”,row
?
“最大数所在列为”,col
27.编程求一个3×4数组的所有元素的平均值及最大值,并输出结果(设数组的各元素为实数,要求从键盘输入其值)。
DIMEA(3,4)
FORI=1TO3
FORJ=1TO4
INPUT“输入数据”TOA(I,J)
ENDFOR
ENDFOR
BIG=A(1,1)
SUM=0
FORI=1TO3
FORJ=1TO4
SUM=SUM+A(I,J)
IFA(I,J)>BIG
BIG=A(I,J)
ENDIF
ENDFOR
ENDFOR
?
“所有元素的平均值为”,SUM/(3*4)
?
“最大元素值为”,BIG
28.输入一个5×5矩阵,分别求两条对角线元素值之和,并输出结果。
(要求用循环结构实现)
DIMEA(5,5)
FORI=1TO5
FORJ=1TO5
INPUT“输入数据”TOA(I,J)
ENDFOR
ENDFOR
ZS=0
FS=0
FORI=1TO5
FORJ=1TO5
IFI=J
ZS=ZS+A(I,J)
ENDIF
IFI+J=6
FS=FS+A(I,J)
ENDIF
ENDFOR
ENDFOR
?
“主对角线上元素之和为”,ZS
?
“辅对角线上元素之和为”,FS