(考试时间 14:00~16:00 共120分钟)
请按下表选答试题
试 题 号
一~三
四~六
七~九
十~十二
选择方法
选答1题
选答2题
选答3题
选答4题
请按下述要求正确填写答卷,若不按下述要求解答,将不给分数
在答卷的指定位置填写你所在的省、自治区、直辖市、计划单列市的名称。
在答卷的指定位置填写准考证编号、出生年月日和姓名。
在试题号栏内用○圈住选答的试题号。
答卷上除填写上述内容外只能写解答。
解答时字迹务必清楚,字迹不清时,将不评分。
仿照下面例题,将解答写在答卷的对应栏内。
例题
一九九六年度举行的计算机软件专业技术资格和水平考试的日期是 (1) 月
(2) 日。
因为正确的答案是10月13日,故在答卷的对应栏内写上‘10’和‘13’(参看下表)。
例 题
解 答 栏
(1)
10
(2)
13
试题一
阅读下列BASIC程序,将应填入(n)处的字句,写在答卷的对应栏内。
[程序1.1]
G = -2
DEF FNA (X) = X * X – 4
DEF FNB (X) = 5
D = FNA (G) + FNB (G) * SGN (G)
DEF FNC (X) = FNA (X) - FNC (D)
PRINT FNA (D)
PRINT FNB (D) + 3 * FNC (D)
END
程序执行后,输出结果为 (1) 。
[程序1.2]
Y = 2
X = 20
DO
X = X – Y
LOOP WHILE X>= 16
PRINT “X=”; X
END
程序执行后,输出结果为 (2) 。
[程序1.3]
A$ = “WINDOWS”
B$ = “WORD”
C$ = LEFT$(A$, 3) + UCASE$(B$)
PFINT “LENGTH OF STRING –“ + C$ +”:”, LEN(C$)
END
程序执行后,输出结果为 (3) 。
[程序1.4]
DECLARE SUB PP (Y)
COMMON SHARED X, T, S
READ X, S
PP X
S = S + T
READ X
RESTORE
PP X
S = S – T
READ X
PRINT “S=”; S
PRINT “X=”; X
END
DATA 5, 4, 3, 2, 1
SUB PP (Y)
T = 1
FOR I = 1 TO X
T = T * I + 1
NEXT I
EDN SUB
程序执行后,输出结果为 (4) 。
试题 二
阅读以下叙述,将应填入 (n) 处的字句,写在答卷的对应栏内。
已知int a = 5, b = 5;
下达表达式的值是 (1) 。
( + + a = = b )? a : b - -
已知int a [ ] = { 5, 4, 3, 2, 1 },
* p [ ] = { a + 3, a + 2, a + 1, a},
* * q = p ;
下列表达式的值是 (2) 。
* ( p [ 0 ] + 1 ) + * * ( q + 2 )
已知 float x, y, z;
实现下达算式的C代码是 (3) 。
Z = sin(36°)/√x2 + y2 ( 设x ≠ 0, y ≠ 0 )
下述语句实现将S2所指字符数组中前n个字符复制到S1所指字符数组中,其中空框中的代码是 (4) 。
For ( ; n - - ; ) ;
字符指针数组 pta [ ] 共有5个元素,其定义形式是 (5) 。
试题 三
阅读以下 FoxBASE 程序,将应填入 (n) 处的字句,写在答卷的对应栏内。
[程序3.1]
SET TALK OFF
STORE .T. TO X
STORE O TO Y
DO WHILE X
STORE Y + 1 TO Y
IF INT(Y/7) = Y/7
?? Y
ELSE
LOOP
ENDIF
IF Y > 15
STORE .F. TO X
ENDIF
ENDDO
SET TALK ON
程序执行后,输出结果为 (1) 。
[程序3.2]
SET TALK OFF * PM.PRG
Q = 1
DO PM WITH Q PARAMETERS X
? “Q=”, Q X = X + 2
SET TALK ON IF X < 10
RETURN ?? X
RETRY
ELSE
RETURN
程序执行后,输出结果为 (2) 。
[程序3.3]
SET TALK OFF
STORE 1 TO P, M
X1 = 20
Y2 = 31.3
Z3 = 41.4
N = ASC(“X”)
DO WHILE P <= 3
STORE CHR(N+P-1) + STR (P, 1) TO Q
? “Q=”, Q
M = M * &Q
P = P+2
ENDDO
? “M=”, M
ET TALK ON
RETURN
程序执行后,输出结果为 (3) 。
[程序3.4]
SET TALK OFF
USE ABC
SKIP 8
DISPLAY
LIST
RETURN
设数据库 ABC.DBF 共有30条记录,顺序执行程序中每条语句后,记录指针值依次为
(4) 。
试题 四
阅读以下程序说明和 BASIC 程序,将应填入 (n) 处的字句,写在答卷的对应栏内。
[程序说明]
根据哥德巴赫猜想,任何一个偶数 ( > 4 ),都可以表示为两个素数(即只能被1和本身整除的自然数)之和,如6 = 3 + 3, 8 = 3 + 5,…。
本程序将 4 ~ 100 之间的偶数分解为两个素数,并以两个素数之和的形式打印输出。
[程序]
EDCLARE SUB PRIME (Y)
COMMON SHARED T
FOR N = 4 TO 100 STEP 2
FOR X = 2 TO N – 1
P = X
PRIME P
IF T = 1 THEN
(1)
PRIME P
IF T = 1 THEN
PRINT N; “=”; (2)
(3)
END IF
END IF
NEXT X
NEXT N
END
SUB PRIME (Y)
FOR I = 2 TO SQR(Y)
T = 0
IF Y / I = (4) THEN EXIT FOR
NEXT I
IF (5) THEN T = 1
END SUB
试题 五
阅读以下程序说明和 C 程序,将应填入 (n) 处的字句,写在答卷的对应栏内。
[程序说明]
本程序三位正整数中寻找符合下列条件的整数:它既是完全平方数,又有两位数学相同,例如144、676等,程序找出所有满足上述条件的三位数并输出。
[程序]
main ( )
{
int n, k, a, b, c;
for ( k = 1; ; k + + )
{
(1) ;
if ( n < 100) (2) ;
if ( n > 999) (3) ;
a = n / 100;
b = (4) ;
c = n % 10;
if (flag(a, b, c))
printf(“N = %d = %d*%d\n”, n, k, k);
}
}
flag( (5) )
{
return ! (( x – y ) * ( x – z ) * ( y – z ));
}
试题 六
阅读以下程序说明和 FoxBASE 程序,将应填入 (n) 处的字句,写在答卷的对应栏内。
[程序说明]
某工厂有8个车间,分别设有数据库 CJ1, CJ2, … CJ8,它们具有相同的库结构:GH(C,5);XM(C,8);GZ(N,5);…(分别表示工号、姓名、工资…)。本程序计算(1)全厂工资在500元和550元之间的职工总人数S。
(2)全厂所有车间中工资大于本车间平均工资的职工数总和W。
[程序]
SET TALK OFF
CLEAR
I = 1
(1)
DO WHILE I <= 8
DB = “CJ”+ (2)
USE (3)
COUNT FOR GZ >= 500 .AND. GZ <= 550 TO P
(4)
CONUT FOR GZ >AVGZ TO Q
S = S+P
W = W+Q
(5)
USE
ENDDO
?“全厂工资在500元和550元之间的职工人数为:”,S
?“全厂大于车间平均工资的职工人数总和为:”,W
SET TALK ON
RETURN
试题 七
阅读以下程序说明和 BASIC 程序,将应填入程序中 (n) 处的字句,写在答卷的对应栏内。
[程序说明]
对于十进制数成立如下一组等式:
9 5 1 + 2 = 11
9 5 12 + 3 = 111
9 5 123 + 4 = 1111
……
9 5 12345678 + 9 = 111111111
本程序用来验证对于任何R进制(3 < R < 10)数,都成立类似于上列的一组等式。程序输入R(R进制的基)和任一正整数M(1 < M < R-2),对于形如1 2 3 4 … ( M – 1)M的R 进制数(记为P),验证成立如下等式:
R1 5 P + M1 = Q1
其中R1为R-1的值,M1为M + 1的值,Q1为由M1个1并列构成的R进制数(111…1)。
为简单起见,输出结果均以十进制数表示。
[程序]
DEFLNG P-Q DO WHILE (3)
INPUT “R=”, R K = K + 1
IF R < 3 OR R > 10 THEN Q = (4)
PRINT “R-错误!” IF Q < R THEN
END IF Q = 1 AND (5) THEN
END IF PRINT R1, P, M1, Q1
INPUT “M=”, M PRINT “正确!”
IF M < 1 OR M > R –2 THEN ELSE
PRINT “M-错误!” PRINT “错误!”
END END IF
END IF END
R1 = R – 1 ELSE
M1 = M + 1 C = Q MOD R
P = 0 END IF
FOR L = 1 TO M LOOP
P = (1) PRINT “错误!”
NEXT L END
Q = R1 * P + M1
Q1 = (2)
K = 0
C = Q MOD R
试题 八
阅读以下程序说明和 C 程序,将应填入程序中 (n) 处的字句,写在答卷的对应栏内。
[程序说明]
本程序所列函数 replace ( char *s1, char *s2, char *str1, char *str2 )实现将已知字符串 s1 中所有与字符串 str1 相同的字符列时,就把该字符拷贝到字符数组 s2;当从某字符开始能构成一个与字符串 str1 相同的字符列时,就将字符串 str2 的各字符拷贝到字符数组s2,并继续访问字符串 s1 中那个字符列之后的字符,直至字符串 s1 被访问完,字符复制即告结束。
如程序中所列数据,程序运行输出为:
ABCXYZdefg abABCXYZd abab
[程序]
replace (char *s1, char *s2, char *str1, char *str2)
{
char *t0, *t1, *t2
while ( (1) )
{
for (t0=s1, t1=str1;*t1 != ’\0’ && (2) ; t0++, t1++);
if (*t1 != ’\0’) *s2++ = (3) ;
else
{
for(t1=str2;*t1 != ’\0’ ;) *S2++ = (4) ;
(5) ;
}
}
*S2 = ’\0’;
}
main( )
{
char s1[ ] = “abcdefg ababcd abab .”;
char s2[80];
replace(s1, s2, “abc”, “ABCXYZ”);
printf(“%s\n”, s2);
}
试题 九
阅读以下程序说明和 FoxBASE 程序,将应填入 (n) 处的字句,写在答卷的对应栏内。
[程序说明]
现在奥运会奖牌数据库(JPK.DBF)库结构如下:
GJ (C,10) 表示国家名称
JP (N,2) 金牌数
YP (N,2) 银牌数
TP (N,2) 铜牌数
ZS (N,3) 总数
及某一时刻数据库的前五条记录如下:
Record # GJ JP YP TP ZS
1 中国 16 21 12
2 美国 36 31 19
3 俄国 23 20 10
4 德国 14 15 23
5 法国 15 6 14
本程序用来计算各国获奖牌总数(ZS),并能按用户要求(通过键盘输入),分别显示按金牌、银牌、铜牌或总数排名的名次表。
[程序]
SET TALK OFF
CLEAR
USE JPK
A1 = “ ”
REPL (1)
@3,20 SAY“按何种奖牌排名”
@5,18 SAY“金牌—JP 银牌—YP”
@7,18 SAY“铜牌—TP 总数—ZS”
@9,18 SAY“请输入奖牌代号:” (2) A1
READ
SORT (3) TO MCK
USE MCK
CLEAR
LIST
USE
SET TALK ON
RETURN
¬ 在打开数据库JPK后,欲显示金牌(JP)数在20块以上(含20块)的国家名字,要求只显示国名和金牌数,应使用 (4) 命令。
若需要显示前一个国家的金牌数总和,银牌数总和及铜牌数总和,可在打开数据库JPK后,使用 (5) 命令。
试题 十
阅读以下程序说明和 BASIC 程序,将应填入程序中 (n) 处的字句,写在答卷的对应栏内。
[程序说明]
本程序对于键盘输入的M,按不同情况输出相应结果:
当 M < 0 时,输出:‘M为负数’
当M为非整数时,输出‘M为非整数’
当M为偶数时,输出‘M为偶数’
当M为奇数时,输出表达式C1m+ C2m+……+Cmm的值。
其中
[程序]
DECLARE SUB P (X) (5)
COMMON SHARED N, G G = 1
INPUT “M=”, M FOR I = 1 TO N
(1) G = G * I
CASE IF < 0 NEXT I
PRINT “ M 为负数 ” END SUB
CASE IS <> INT(M)
PRINT“ M为偶数”
CASE ELSE
N = M
P N
T1 = G
W = 0
K = 1
DO UNTIL (3)
N = K
P N
T = T1 / G
N = M – K
P N
T = T / G
W = W + T
K = K + 2
(4)
PRINT “W=”, W
END SELECT
END
试题 十一
阅读以下程序说明和 C 程序,将应填入程序中 (n) 处的字句,写在答卷的对应栏内。
[程序说明]
本程序是寻找长整数A。A的个位数a [ 0 ]为指定的数p(取值分别为2、3、4、……、9)。若将A的个位数字移到其它各位数字之前,则其数值为原数值A的p倍。例如,p为4,则A为102564(各位数字分别存入a [ 5 ], a [ 4 ], ……,a [ 0 ]之中),有102564 5 4 = 410256。
寻找从a [ 0 ] = p出发,用p 乘已确定的位的数值可推出其前1位的数字,逐位进行,直到用p乘a [ n – 1 ]等于a [ 0 ],递推计算结束,A即为:
a [ n – 1 ] a [n – 2 ] …… a [ 0 ]
[程序]
#define N 60
int a [ N ];
main()
{
int p, i, n;
for ( p=2; p<=9; p++ )
{
n = search(p);
printf(“p = %d: a = “,p);
for(I = n - 1; (1) ; i - -)
printf(“%d”, a [ i ] );
printf(“\n”);
}
}
int search (int p)
{
int i, t, c;
c = 0
(2) ;
for (i = 1; ; i + + )
{
t = a[I-1]*p+c;
if (t==p) break;
a{I} = (3) ;
c = (4) ;
}
(5) ;
}
试题 十二
阅读以下程序说明和 FoxBASE 程序,将应填入程序中 (n) 处的字句,写在答卷的对应栏内。
[程序说明]
设有一个人员数据库RXK.DBF,其库结构为:
CH(C,6);XM(C,8);SFZH(C,15);XL(C,8);
DW(C,20);CJGZ(D,8);GZ(N,4);
分别代表工号、姓名、身份证号、学历、单位、参加工作、工资。
及另一个考核成绩库CJK.DBF,其库结构为:
CH(C,6);LR(N,5,1);CZ( N,5,1);ZF(N,5,1);
分别代表工号,理论成绩,操作成绩,总分。
本程序完成:
总分计算;
生成一个新数据库NEW,含字段GH,XM,XL,LR,CZ,ZF等。
显示总分(ZF)超过160分的职工的GH,XM,LR,CZ。
[程序]
SET TALK OFF
SELECT D
USE CJK
REPL ALL ZF WITH LR+CZ
(1) TO CHKGH && CHKGH 为索引文件
SELECT F
USE RXK
SET (2)
COPY TO NEW (3)
(4)
LIST FIELDS (5)
USE
SET TALK ON
RETURN