首页 随笔 乐走天涯 程序资料 评论中心 Tag 论坛 其他资源 搜索 消息中心 联系我 关于 RSS

历届试题 - 一九九六年度初级程序员级 下午试卷


日期: 2004-06-14 14:00 | 联系我 | 关注我: SteemIT, Twitter, Google+

(考试时间 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


 文章评论

第 1 楼  发表于 2004-06-21 16:13 | hghg 的所有评论
我只学了c语言,不知道能不能报考程序员?谢谢各位大虾回答我。

第 2 楼  发表于 2005-01-07 11:08 | hendydong 的所有评论
很好呀
可不可以多一点历年的试题呀
那你可以为我回答一个问题吗?
就是用汇编语言做的
有20个人围在一起 ,按照号码编号 当数到7的时候哪个人出列 一直这样重复问最后出来的是几号
如果你能帮我的话 你就发到我的邮箱里,最好是在12号以前给我
谢谢了

第 3 楼  发表于 2005-10-17 03:24 | zhangbo 的所有评论
我对程序很干兴趣
我想学这个 首先要从什么开始啊
请各位帮忙啊
一定要回复我啊
谢了

第 4 楼  发表于 2006-01-11 11:24 | 周星驰 的所有评论
我没有考过,我想问一下,下午卷就这么十二个题呀?

第 5 楼  发表于 2006-02-02 08:58 | xuejinru 的所有评论
我对程序很干兴趣
我想学这个 首先要从什么开始啊
请各位帮忙啊
一定要回复我啊
谢了



第 6 楼  发表于 2006-05-24 17:44 | kF 的所有评论

我是做设计的对程序也很感兴趣不知道从哪里开始学哪位大哥帮帮忙指导指导!

E-mail:konswell@sina.com
欢迎交流

第 7 楼  发表于 2006-07-13 17:35 | 西北浪人 的所有评论
我对程序很干兴趣
我想学这个 首先要从什么开始啊
请各位帮忙啊
一定要回复我啊
谢了

第 8 楼  发表于 2006-08-29 21:09 | 木马 的所有评论
怎么以上的问题都没有回答啊 我晕~

第 9 楼  发表于 2006-11-13 21:01 | longzefeng 的所有评论
我对程序很感兴趣
我想学这个 首先要从什么开始啊
请各位帮忙啊
一定要回复我啊
谢了

共有评论 9 条, 显示 9 条。

发表你的评论
如果你想针对此文发表评论, 请填写下列表单:
姓名: * 必填 (Twitter 用户可输入以 @ 开头的用户名, Steemit 用户可输入 @@ 开头的用户名)
E-mail: 可选 (不会被公开。如果我回复了你的评论,你将会收到邮件通知)
网站 / Blog: 可选
反垃圾广告: 为了防止广告机器人自动发贴, 请计算下列表达式的值:
5 x 5 + 1 = * 必填
评论内容:
* 必填
你可以使用下列标签修饰文字:
[b] 文字 [/b]: 加粗文字
[quote] 文字 [/quote]: 引用文字

 
首页 随笔 乐走天涯 猎户星 Google Earth 程序资料 程序生活 评论 Tag 论坛 资源 搜索 联系 关于 隐私声明 版权声明 订阅邮件

程序员小辉 建站于 1997 ◇ 做一名最好的开发者是我不变的理想。
Copyright © XiaoHui.com; 保留所有权利。