試 題 號
一~三
四~六
七~九
十~十二
選擇方法
選答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
延伸閱讀
文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/