第3章课后题已标注难度.docx
《第3章课后题已标注难度.docx》由会员分享,可在线阅读,更多相关《第3章课后题已标注难度.docx(20页珍藏版)》请在冰豆网上搜索。
第3章课后题已标注难度
第三章结构化程序设计基础习题
说明:
题号前标注的*为题目的难度等级,*越多难度等级越高。
一、选择填空题
1、以下程序的运行结果为
x=1.5
docase
casex>2
y=2
casex>1
y=1
endcase
?
y
return
A、1B、2C、0D、语法错误
2、循环结构中EXIT语句的功能是
A、放弃本次循环,重新执行该循环结构
B、放弃本次循环,进入下一次循环
C、退出循环,执行循环结构的下一条语句
D、退出循环,结束程序的运行
3、简单分支结构语句是
A、CASE…ENDCASEB、DO…ENDDO
C、IF…ENDIFD、SCAN…ENDSCAN
4、关于PARAMETERS语句,下列叙述中错误的是
A、该语句应是子程序中的第一个语句
B、形式参数只能是内存变量
C、形式参数之间用逗号分格
D、形式参数的个数应与调用实参个数一致
5、以下关于子程序的叙述中不正确的是
A、一个主程序可以调用任意多个子程序
B、一个子程序可以调用其他子程序
C、主程序可调用子程序,但子程序不可调用其他的子程序
D、子程序用DO命令调用
6、下列循环共执行了次
fori=1to10
?
i
i=i+1
Endfor
A、10B、5C、0D、语法错
*7、[程序说明]:
求1!
+3!
+5!
+……+N!
的值。
N由键盘输入,且为奇数。
[程序]
SETTALKOFF
CLEAR
(1)
STORE0TOS,T
FORI=1TONSTEP2
DOSUB
(2)
ENDFOR
?
S
SETTALKON
PROCSUB
T=1
FORJ=1TO(3)
(4)
ENDFOR
(1)A、ACCEPT"N="TONB、INPUT"N="TON
C、WAIT"N="TOND、DOWHILE.T.
(2)A、S=S+TB、S=S+NC、S=TD、S=S+T*I
(3)A、NB、TC、2*I+1D、I
(4)A、T=T*IB、T=T*JC、T=T*ND、S=S+J*T
**8、[程序说明]:
模糊查询用户指定表文件中指定字段(字符型)的指定内容,如果用户指定的表文件不存在,给予提示信息。
[程序]
SETTALKOFF
CLEAR
ACCEPT"请输入表文件名(带扩展名):
"TOFILENAME
ACCEPT"请输入要查询的字段名(字符型):
"TOFIELDNAME
ACCEPT"请输入要查询的内容(字符串):
"TOCHAR
IF
(1)
(2)
BROWSEFOR(3)
USE
(4)
?
"指定的表文件不存在!
"
ENDIF
SETTALKON
(1)A、FILE(FILENAME)B、TYPE("&FILENAME")
C、FILE("FILENAME")D、FILE(&FILENAME)
(2)A、USEFILENAMEB、USE(FILENAME)
C、USE&FILENAME..DBFD、USE&FILENAME.DBF
(3)A、CHAR$FIELDNAMEB、AT(CHAR,FIELDNAME)>0
C、CHAR$&FIELDNAMED、AT(&CHAR,&FIELDNAME)>0
(4)A、LOOPB、EXITC、ELSED、IF
9、[程序说明]:
本程序比较从键盘输入的若干个数的大小,并输出其中的最大数和最小数。
[程序]
SETTALKOFF
CLEAR
INPUT“M=”TOM
(1)
DOWHILE.T.
INPUT“N=”TON
(2)
D=N
ENDIF
IFX>N
X=N
ENDIF
YN=’A’
(3)
WAIT“是否继续输入(Y-继续/N-结束)”TOYN
ENDDO
(4)
EXIT
ENDIF
ENDDO
?
“最大数是:
”,D
?
“最小数是:
”,X
SETTALKON
(1)A、STOREMTOD,XB、STORE0TOD,X
C、STOREM,0TOD,XD、STORE100,0TOD,X
(2)A、IFD=NB、IFD>N
C、IFD>=ND、IFD(3)A、DOWHILEUPPER(YN)
B、DOWHILEUPPER(YN)<>‘Y’
C、DOWHILEUPPER(YN)<>‘Y’ANDUPPER(YN)<>‘N’
D、DOWHILEUPPER(YN)<>‘Y’ORUPPER(YN)<>‘N’
(4)A、UPPER(YN)=’Y’
B、UPPER(YN)=’N’
C、UPPER(YN)<>’Y’
D、UPPER(YN)<>’N’
**10、[程序说明]:
本程序用于统计2~M中有多少个素数(素数即只能被1或本身整除的自然数)。
[程序]
SETTALKOFF
CLEAR
INPUT“M=”TOM
S=0
(1)
IFSS(I)
S=S+1
?
?
STR(I,5)
ENDIF
ENDFOR
?
STR(S,5)
SETTLAKON
FUNCSS
(2)
FORJ=2TOX-1
(3)
EXIT
ENDIF
ENDFOR
IFJ=X
RETURN.T.
ELSE
(4)
ENDIF
ENDFUNC
(1)A、FORI=1TOM-1B、DOWHILEI<=M
C、FORI=MTO1STEP–1D、FORI=2TOINT(M/2)
(2)A、X=IB、PUBLICX
C、PRIVXD、PARAX
(3)A、IFINT(X/J)=X/JB、IFINT(X/J)
C、IFX%J=X/JD、IFJ%X=0
(4)A、RETUB、RETU.F.
C、QUITD、RETUX
二、程序阅读:
阅读下列程序,写出运行结果
1、程序①:
设变量N的输入值为12,变量M的输入值为8。
SETTALKOFF
CLEAR
INPUT"N="TON
INPUT"M="TOM
X=MIN(N,M)
FORI=XTO1STEP-1
IFM/I=INT(M/I)ANDN/I=INT(N/I)
P=I
EXIT
ENDIF
ENDFOR
?
"P="+ALLTRIM(STR(P,19))+",R="+ALLTRIM(STR(M*N/P,19))
SETTALKON
2、程序②:
设变量X的输入值分别为210,366,0
SETTALKOFF
CD=“天一二三四五六”
DOWHILE.T.
INPUT“X=”TOX
X=IIF(X>0ANDX<366,MOD(X+2,7)+1,IIF(X=0,0,8))
DOCASE
CASEX=0
?
“结束”
EXIT
CASEX=8
?
“输入有错”
LOOP
OTHERWISE
?
“星期”+SUBSTR(CD,2*X-1,2)
ENDCASE
ENDDO
SETTALKON
3、程序③:
设变量X的输入值为36。
SETTALKOFF
CLEAR
INPUT"X="TOX
S=STR(X,5)+"="
FORI=2TOX
IFMOD(X,I)=0
S=S+STR(I,3)+"*"
X=INT(X/I)
I=I-1
ENDIF
ENDFOR
?
LEFT(S,LEN(S)-1)
SETTALKON
4、程序④
SETTALKOFF
CLEAR
INPUT“M=”TOM
I=2
DOWHILEIIFM%I=0
?
?
STR(I,6)
M=INT(M/I)
LOOP
ENDIF
I=I+1
ENDDO
SETTALKON
*设M的值为24。
*5、程序⑤
SETTALKOFF
CLEAR
INPUT"N="TON
INPUT"P="TOP
FORI=1TON
?
SPACE(N-I+1)
IFI<=P
FORJ=1TO2*I-1
?
?
CHR(ASC("A")+J-1)
ENDFOR
ELSE
FORJ=1TO(2*I-1)-(I-P)
?
?
CHR(ASC("A")+J-1)
ENDFOR
ENDIF
ENDFOR
SETTALKON
*设N,P的输入值分别为7,4。
注:
字符"A"的ASCII码值为65。
6、程序⑥
CLEAR
FORI=1TO3
A=’*'
FORJ=1TOI
A=A+STR(I,1)
NEXT
@I,5SAYA
NEXT
CANCEL
*7、程序⑦:
设输入的字符串P为RzNopytQdnpvgAjKmy
SETTALKOFF
CLEAR
ACCEPT“请任意输入一串字符:
”TO P
L=LEN(P)
C=“”
FORI=1TO L;
A=SUBSTR(P,I,1)
DOCASE
CASEASC(A)﹥=ASC(“a”)ANDASC(A)﹤=ASC(“u”)ORASC(A)﹥=ASC(“A”)ANDASC(A)﹤=ASC(“U”)
A=CHR(ASC(A)+5)
CASEASC(A)﹥=ASC(“v”)ANDASC(A)﹤=ASC(“z”)ORASC(A)﹥=ASC(“V”)ANDASC(A)﹤=ASC(“Z”)
A=CHR(ASC(A)-21)
ENDCASE
C=C+A
ENDFOR
?
P+”----﹥”+C
SETTALKON
8、程序⑧:
设输入的数值N为5
SETTALKOFF
CLEAR
INPUT”N”=TON
P=N
I=1
DOWHILEN﹥0
?
SPAC(I)
P=N+I
DOWHILEP﹥0
?
?
”*”
P=P-1
ENDDO
I=I+1
N=N-1
ENDDO
SETTALKON
**9、说明下面程序实现的是什么功能,写出程序执行的输出结果。
SETTALKOFF
CLEAR
INPUT”X=”TOX
S=0
STORE1TOT1,T2,I
T3=-1
DOWHILEABS(T1/T2)>1E-5
STORE1TOT1,T2
FORJ=1TO2*I-1
T1=T1*X
T2=T2*J
T3=-T3
ENDFOR
S=S+T3*T1/T2
I=I+1
ENDDO
?
”SIN(“+STR(X,6,4)+”)=”+STR(S,10,7)
SETTALKON
*10、程序⑩
SETTALKOFF
X=12
Y=23
B=”101011”
N=LEN(B)
FORI=1TON
C=SUBSTR(B,I,1)
SF=IIF(VAL(c)=1,”*”,”+”)
SS=”X”+”&”+”SF.”+”Y”
?
”ANSWER”+”:
”+STR(&SS,4)
X=X+2*I
Y=Y+I
ENDFOR
RETURN
SETTALKON
三、程序改错
1、求当1!
+3!
+5!
+…+n!
的值不超过10的20次幂时的临界值及n的值。
(*号下面的语句有错)
SETTALKOFF
CLEAR
*****1*****
S=0
STORE1TOT,N
DOWHILES<=1E+20
T=T*(N+1)*(N+2)
S=S+T
*****2*****
N=N+1
ENDDO
?
"S=",S-T
?
"N=",N-2
SETTALKON
2、从键盘输入一个数值(0~9),要求输入其对应的中文大写数字(零~玖)。
(*号下面的语句有错)
SETTALKOFF
CLEAR
C="零壹贰叁肆伍陆柒捌玖"
*****1*****
ACCEPT"N="TON
*****2*****
?
N,"-->"+STR(C,2*N-1,2)
SETTALKON
3、要求:
给定一个年份(从键盘输入数值型数据),判断它是闰年;闰年的条件是:
能被4整除但不能被100整除,或能被100整除且能被400整除。
(*号下面的语句有错)
SETTALKOFF
CLEAR
*****1*****
ACCEPT"Y="TOY
*****2*****
IF(Y%4ANDY!
%100)AND(Y%100ANDY!
%400)
?
Y,"是闰年!
"
ELSE
?
Y,"不是闰年!
"
ENDIF
SETTALKON
4、x^1+x^2+^3+x^4+。
。
。
。
+x^n的值。
n,x从键盘输入。
(*号下面的语句有错)
SETTALKOFF
CLEAR
INPUT"N="TON
INPUT"X="TOX
S=0
*****1*****
T=0
FORI=1TON
T=T*X
S=S+T
ENDFOR
*****2*****
?
"S="+S
SETTALKON
5、显示输出正整数M(从键盘输入)内的偶数及偶数和。
(*号下面的语句有错)
SETTALKOFF
CLEAR
INPUT'M='TOM
S=0
FORP=1TOM
*****1*****
IFINT(P/2)
?
P
*****2*****
S=S+1
ENDIF
ENDFOR
?
S
SETTALKON
6、已知有学生表(学生.Dbf)(学号,姓名,性别,出生年月,简历,奖学金,照片)要求显示输出“学生”表中的1971年或以前出生的学生姓名和出生年月(*号下面的语句有错)
SETTALKOFF
CLEAR
USE学生
*****1*****
LOCATEFOR出生年月<=1971
DOWHILE!
EOF()
?
姓名,出生年月
*****2*****
SKIP
ENDDO
USE
SETTALKON
7、下面是计算自然数1~100之和的程序,(程序中有三处错误,请找出错误并改正)。
SETTALKOFF
CLEAR
S=1
FORI=1TOSTEP2
S=S+I
ENDDO
?
'S='+STR(S,4)
SETTALKON
RETURN
**8、下面是求表达式(xy+ex+y)÷(x÷y)3log|x-y|)值的程序,(程序中有二处错误,请找出错误并改正)。
(x、y的值从键盘输入)
SETTALKOFF
CLEAR
INPUT“X=”TOX
INPUT“Y=”TOY
Z=X-Y
IFZ>0
Z=-Z
ENDIF
S=(X*Y+EXP(X+Y))/((X/Y)*(X/Y)*X/Y)*LOG(Z)
?
'S='+S
SETTALKON
9、已知有学生表(学生.dbf)(学号,姓名,性别,出生年月,简历,奖学金,照片),要求:
显示“学生”表中的全部字段名。
(程序中有二处错误,请找出错误并改正)
SETTALKOFF
CLEAR
USE学生
FORN=1TORECCOUNT()
FOUND(N)
ENDFOR
USE
SETTALKON
10、从键盘输入A,B,C三个数值,将它们从小到大排列后输出。
(程序中有九处错误,请找出错误并改正)
SETTALKOFF
CLEAR
INPUT"A="TOA
INPUT"B="TOB
INPUT"C="TOC
IFA>B
A=B
B=A
ENDIF
IFA>C
A=C
C=A
ENDIF
IFB>C
B=C
C=B
ENDIF
?
A
?
B
?
C
SETTALKOFF
四、编程:
根据题目要求,编写相应的程序。
*1、从键盘输入一串字符(口令),自动判断输入的口令是否与系统的口令(自设)一致,是则显示相应的欢迎信息;否则有3次机会。
输入次数在3次以内,给予重输的提示;输入次数超过3次,则显示无权使用系统的提示。
**2、编写一个自定义函数,将数字金额轮换为中文大写。
设最高位亿,最低位分。
3、显示输入“学生”表中每个班级的男女同学的奖学金总额(假设表中的字段为:
班组,学号,学生姓名,性别,奖学金)。
*4、键盘任意输入两个整数,求出最大公约数和最小公倍数。
*5、编写程序,在屏幕上显示如下图案:
A
ABC
ABCDE
ABCDEFG
ABCDE
ABC
A
*6、编写程序,在屏幕上显示如下图案:
1
11
121
1331
14641
*7、求解百鸡问题,“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一,百钱百鸡,问鸡翁、母、雏各几何?
”
8、输入三角形的三个边长A、B、C,若A、B、C能构成三角形,则计算出三角形面积;否则提示“不能构成三角形!
”。
若构成的三角形为直角三角形,也给出“构成直角三角形”的提示。
面积S=式中W=(A+B+C)/2
*9、某班学生五次英语测验成绩及姓名已登录在E:
\VFP\ENGLISH.DBF数据表中,该数据表含有字段NO1,……,NO5(N型)及姓名(C型),该库仅有此6个字段。
编写程序,对全班每个学生五次成绩按最好的成绩排序,再按去掉最高和最低成绩后的平均成绩排序,并显示出来。
10、某班学生计算机考试成绩已登记到E:
\COMPUTER.DBF自由表的成绩(N型)字段中,另有评估(C型)字段。
编程序将每个学生的计算机成绩进行评估,评估分为:
“优秀”(90-100)、“良好”(80-89)、“中等”(70-79)、“及格”(60-69)、“不及格”(0-59)五个等级,并将评估结果写到评估字段中。