一九九七年度初级程序员级下午试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一九九七年度初级程序员级下午试题
试题一
阅读下列BASIC程序,将应填入__(n)__处的字句,写在答卷的对应栏内。
[程序1.1]
A=1
B=-1
IF A>B AND B=ABS(B) THEN GOTO P
A=2
IF A=B OR NOT(A+B)<(a-b)then goto p a=3 if(a=2 or b-1=-A)OR(A=B+4 and not (a<>3) THEN GOTO P
A=4
P:PRINT A+ABS(B)
END
程序执行后,输出结果为__(1)__.
[程序1.2]
DECLARE FUNCTION P$(X,Y)
COMMON SHARED A,B,C$
INPUT “A=”,A
INPUT “B=”,B
C$=“TEST-RESULT”
PRINT P$(A,B)
END
FUNCTION P$(X,Y)
IF X>=Y THEN
Z$=MID$(C$,6,6)+“1=”+STR$((SQR(X)+ABS(Y))/2)
ELSE
Z$=MID$(C$,6,6)+“2=”+STR$(INT(X+Y)*100)
END IF
P$=Z$
END FUNCTION
若对变量A、B分别输入16和-3,则输出结果为__(2)__。
若对变量A、B分别输入23.3和39.5,则输出结果为__(3)__。
[程序1.3]
C$=“0123456789ABCDEF”
I=16
DIM X$(I)
L: INPUT“S=”,S
INPUT“D=”,D
IF (S<2’ors>16 OR D <0 or d>32767 THEN
PRINT “ERROR”
GOTO L
DO WHILE D<> 0
A=D
D=INT(A/S)
B=A-D*S
X$(I)=MID$(C$,B+1,1)
I=I-1
LOOP
FOR J=I+1 TO 16
PRINT X$(J);
NEXT J
END
若对变量S、D分别输入16和175,则输出结果为__(4)__。
[程序1.4]
OPTION BASE 1
DIM B(6)
K=1
WHILE K<=6 read b(k) k=K+1 wend for k1=1 to 5 l=B(K1+1) for k2=K1 to 1 step ╟1 if l>B(K2)THEN
GOTO S
END IF
B(K2+1)=B(K2)
NEXT K2
S: B(K2+1)=L
NEXT K1
I=1
DO UNTIL I>6
PRINT B(I);” ”;
I=I+1
LOOP
DATA 9,-1,4,18,-5,7
END
程序执行后,输出结果为__(5)__。
试题二
阅读以下与C语言有关的叙述,将应填入__(n)__处的字句,写在答卷的对应栏内。
已知int x=1,y=2,z=3;
则z + = x > y ? + + x : + + y的值是__(1)__。
已知int a[ ] ={10,9,8,7,6},*p=a;
则*(p+1)*(p+2)[2]的值是__(2)__。
已知char ch ;
则判别ch 是英文字符的逻辑表达式是__(3)__。
已知int p( ),(*q)( );
则P是__(4)__,而q是__(5)__.
阅读以下FoxBASE程序,将应填入__(n)__ 处的字句,写在答卷的对应栏内。
[程序3.1]
SET TALK OFF
P=CTOD(‘07/01/97’)
Q=‘东方之珠:香港’
R=‘庆祝回归’
M=SUBSTR(Q,10,4)+SUBSTR(R,5,4)+’日’
? DTOC(P)+’是+SUBSTR(R,1,4)+M
SET TALK ON
RETURN
程序执行后,输出结果为__(1)__。
[程序3.2]
* P1.PRG
SET TALK OFF
A=100
B=1
DO P2 WITH B
? B*4+SQRT(A)
SET TALK ON
RETURN
* P2.PRG
PARAMETERS U
U=U+2
IF U<20 retry endif return 程序执行后,输出结果为__(2)__。
[程序3.3] * g1.prg set talk off clear dim ension x (2) public a a=’绿化’ b=146.77 x(1)=’BC’ x(2)=’EF’ c=’祖国’ do g2 ? a+c ?x(1)+x(2),b+100.1 set talk on return * g2.prg private b a=’保卫’ b=476.22 store’aa’ to x return 程序执行后,输出结果为__(3)__和__(4)__。
[程序] *.prg set talk off clear input’a=’ to a input’b=’ to b input’c=’ to c g=100*CAL(A,B,C) ?’程序输出:‘+str(g,5,1) set talk on return *自定义函数cal.prg parameters x,y,z s=(X+Y+Z)/2 return sqrt(s*(s-x)*(s-y)*(s-z) 当a、b、c分别键盘输入3,4,5经程序执行后,输出结果为__(5)__。
试题四
阅读以下程序说明和BASIC程序,将应填入__(n)__处的字句。
写在答卷的对应栏内。
[程序说明]
本程序按得分从大至小打印出十佳运动员的编号、得分和名次。
运动员编号、得分由DATA 语句提供,分别存入在数组N和数组M中。
每个运动员得分最高为120分。
得分从大到小排序
方法采用冒泡法,为提高排序速度,算法中啬了下列措施:若在某一次冒泡过程中发现没有发生过数据交换,则表示数据已排序完毕,此时可提前结束排序。
具有相同得分的运动员,其名次相同。
例如前4位运动员排序后的名次情况如下:
编号得分名次
4 119 1
7 119 1
5 110 4
[程序]
DIM N(10),M(10),L (10)
FOR I=I TO 10
READ N(I),M(I)
NEXT I’
I=10
S1: FLAG=0
FOR__(1)__
IF M(J) b>试题五
阅读以下程序说明和C语言,将应填入__(n)__处的字名,写在答卷的对应栏内。
[程序说明]
本程序利用Machin公式求π的值。
Machin公式的可表示如下:
π=16arctan( )-4 arctan( )
其中arctan用如下形式的级数计算:
arctan(x)=x- + + +…
直到级数的某项绝对值不大于10-15为止;π和x均为双精度实数。
[程序]
main()
{
double a,b;
____(1)____;
a=____(2)____;
b=____(3)____;
printf(“PI=%20.15f\n”,a-b);
}
double arctan(double x)
{
int I;
double r, e, f, sqr;
sqr=x*x;
r =0;
e =x;
I =1;
white (e/I >le-15)
{
f=e/I;
r=(i%4==1)?___(4)____;
e=e*sqr;
I+=2;
}
return____(5)____;
}
阅读以下程序说明和FoxBASE程序,将应填入__(n)__处的字句,写在答卷对应栏内。
[程序说明]
设有一个名为GZ.DBF的工资数据库,其库结构为:
XM(C,8) XB(C,2) ZC(C,10) GZ(N,8,1) CSRQ(D,8) ZSGF(L,1)
它们分别表示姓名、性别、职称、工资、出生日期、正式工否。
本程序的功能:
显示1970年10月1日后(含10月1日)出生的、职称为工程师的正式职工的姓名、年龄及工资。
女性非正式职工每人增加工资30%。
计算正式职工的平均工资存入变量PG。
[程序]
SET TALK OFF
CLEAR
USE GZ
DO WHILE.NOT.EOF()
IF____(1)____
?XM,____(2)____,GZ
ELSE
IF XB=’女’____(3)____
____(4)____
ENDIF
ENDIF
SKIP
ENDDO
____(5)____
USE
SET TALK ON
RETURN
试题七
阅读以下程序说明和BASIC程序,将应填入__(n)__处的字句,写在答卷的对应栏内。
[程序说明]
本程序中自定义函数TSIN(x)是按泰勒展开式计算SIN x的近似值。
SIN x的展开式为:--------------------------------------------------------------------------------
SIN X = _ + _ +……= (-1) n-1
计算精度为10-6 。
变量T用于存放展开式的一项,利用递推关系可求得展开式的下一项。
当某项的绝对值小于计算精度时,停止累加,累加和即为该精度下的SIN x的近似值。
利用该自定义函数计算如下公式并输出结果
K= 当R2≤S2
当R2>S2
其中R、S的值由键盘输入
[程序]
DECLARE FUNCTION TSIN (X)
INPUT “R=”,R
INPUT”S=”, S
IF R* R<= s*s then ____(1)____ else k=TSIN(R*S)/2 end if print k end function tsin (x) p=.000001 g=0 t=X n=1 do until____(2)____ g=____(3)____ n=N+1 t=____(4)____ loop ____(5)____ end function 试题八
阅读以下程序说明和C程序,将应填入__(n)__处的字句,写在答卷的对应栏内。
[程序说明]
本程序用于寻找并输出11~999之间的数m,m2和m3均为回文数。
所谓回文数是指其各位数字
左右对称的整数,例如121,676,94249等。
满足上述条件的数如m=11 ,m2=121,m3=1331 皆为回文数。
确定回文数的重要一步是确定一个整数的逆序数,即将该整数的各个数字从
左至右逆序排列形成的整数,如103的逆序数为301。
[程序]
main ( )
{ long m;
for (m=11; m<1000; m++) { if (symm(m) && ___(1)___ ) printf ("m=%41d, m*m=%61d, m*m*m=%81d/n", m, m*m, m*m*m); } } int symm(long n) { long i, m; ____(2)_____; ____(3)____; while (i) { m=m*10 + i % 10; ____(4)____; } return (____(5)____); } 试题九
阅读以下程序说明和FoxBASE程序,将应填入 __(n)__处的字句,写在答卷的对应栏内。
[程序说明]
设有某项考试的成绩库CJK.DBF,其库结构为:
ZKZH(C,4) XM(C,8) LL(N,3) CZ(N,3)
它们分别表示准考证号、姓名、理论成线、操作成绩。
数据库记录:
Record # ZKZH XM LL CZ
1 1001 王芳 89 99
2 1002 李一明 100 77
3 1003 刘冬 76 62
4 1004 张大林 88 90
5 1005 曹青 68 95
……
以及与之同序排列的人员基本库JBK.DBF,其库结构为:
ZKZH(C,4) XM(C,8) SR(D,8) XL(C,4)
CJGZ(C,4) DWC(C,20) ZSH(C,6) LL(N,3) CZ(N,3)
它们分别表示准考证号、姓名、生日、学历、参加工作年月、单位、证书号、理论成绩、
操作成绩。
数据库记录:
Record # ZKZH XM SR XL CJGZ DWC ZSH LL CZ
1 1001 王芳 12/0169 高中 8707 东风中学
2 1002 李一明 10/16/70 初中 9209 黄桥街道办
3 1003 刘冬 02/05/72 职高 9209 海宁医院
4 1004 张大林 02/03/69 高中 8508 大光实业公司
5 1005 曹青 08/07/69 高中 8710 新技术开发公司
本程序功能:
对于理论和操作两项成绩之和大于等于160分的合格考生,将成绩库的成绩填到人员基本库中相应字段。
对于合格考生赋于证书号,从某一初始证号(人工键盘输入)起,自动依次加一。
显示人员基本记录。
[程序]
SET TALK OFF
CLEAR
ACC EPT’输入人员基本库名:TO F1
ACCEPT’输入成绩库名:’TO F2
INPUT’输入起始证书号:’TO ZH
SELECT 2
USE__(1)__ALIAS F1
DO WHILE.NOT.EOF()
IF___(3)___
REPLACE LL____(4)____
REPLACE ZSH WITH____(5)____
ZH=ZH+1
ENDIF
SKIP
SELECT F2
SKIP
SELECT F1
ENDDO
LIST
CLOSE DATABASES
SET TALK ON
RETURN
试题十
阅读以下程序说明和BASIC程序,将应填入__(n)__处的字句,写在答卷的对应栏内。
[程序说明]
为减少存贮空间或数据通信中的信息量,经常需要对原始数据进行压缩。
下面给出一种压缩规则:
(1)当原始数据中连续出现N(N>1)个相同的数x时,则在压缩数据中相继存放数N和数x。
(2)当原始数据中连续出现M(M>0)个相邻不相同的数(即每个数与其相邻的数均不相同)时,则压缩数据中先存入数-M,再存放这M个相邻不相同的数。
在压缩的数据中,数的存放次序与原始数据中数的出现次序相一致,并在压缩数据的最后加下数0作为压缩数据的结束标志。
例如:
原始数据中有以下数:35,22,22,22,10,5,-2,19,19,19,19
被压缩后的数据为:-1,35,3,22,-3,10,5,-2,4,10、9,0
本程序对输入的已压缩的数据进复原。
程序中数组PACKED存放已压缩的数据,其长度N1由
用户输入。
数组UNPACK存入复原后的原始数据,假设其长度200已足
[程序]
INPUT “N1=”,N1
DIM PACKED (N1),UNPACK(200)
FOR I=I TO N1
INPUT PACKED (I)
NEXT I
I=1
J=0
DO WHILE PACKED (I)<>0
L=PACKED(I)
IF L> 0 THEN
FOR K=1 TO L
UNPACK(J+K)=__(1)__
NEXT K
J=J+L
I=I+2
ELSE
FOR K=____(2)____
UNPACK(J+K)=____(3)____
NEXT K
J=____(4)____
I=____(5)____
END IF
LOOP
FOR I=1TO J
PRINT UNPACK(I)
NEXT 1
END
试题十一
阅读以下程序说明和C程序,将应填入____(n)____处的字句,写在答卷的对应栏内。
[程序说明]
本程序中定义的函烽sdel(s)实现的功能是将已知字符串s中的前导空白符和尾随空白符删去并将字符串中间部分的连续多个空白符删减为一个空白符。
[程序]
char *sdel(char *s)
{
char p=s,q=s;
for(;____(1)____;s++);/*删去前导空白符*/
for(; s;) /遍历s字符串其它字符*/
{
q++=s;
if(*s!=’ ‘)____(2)____;
else
while(____(3)____)
s++;
}
if (q >p &&*(q-1)= =’ ‘) /*设定字符串结束符*/
____(4)____;
else *q=’\0’;
return____(5)____;
}
main()
{
char str[]=”
printf(“%s\n”,sdel(str));
}
试题十二
阅读以下程序说明和FoxBASE程序,将应填入__(n)__处的字句,写在答卷的对应栏内。
[程序说明]
设有图书订单文件TSDD.DBF,其库结构为:
SH(C,5) SM(C,20) SL(N,3) DJ(N,5,1) JE(N,7,1)
它们分别表示书号、书名、新定价。
本程序功能:
首先检验密码输入的正确性(假定密码为‘SKY7381’),输入密码在屏幕上不显示,输入错误超过3次,将拒绝进入本程序。
用调价单的新定价对图书订单中的数据进行更新,并计算出新的金额。
统计订单的总金额,存入变量ZJE,并显示。
[程序]
CLEAR ALL
SET TALK OFF
CLEAR
N=0
DO WHILE.T.
?’请输入密码:’
____(1)____
ACCEPT TO PW
____(2)____
IF PW=’SKY7381’
____(3)____
ELSE
IF N=3
QUIT
ELSE
WAIT’密码错误,请重新输入!’n=n+1
ENDIF
ENDIF
DNDDO
SELECT 6
USE DJD
INDEX ON SH TO DJDIX
SELECT 1
USE TSDD
INDEX ON SH TO TSDDIX UPDATE ON SH ____(4)____
____(5)____
?‘总金额=’,ZJE
CLOSE DATABASES
SET TALK ON
RETURN。