1994年度初级程序员级下午试卷

试题一 略(流程图)


试题二 略(流程图)

 

阅读下列说明和流程图从下列的 3 道试题( 试题 3 至试题 5 )中任选 1 道解答。如果解答的试题数超过 1 道,则解答的前 1 道有效。

 

试题三

阅读下列程序说明和BASIC程序,把应填入__(n)__处的字句,写在答卷的对应栏内。
[程序说明]

本程序按如下算式汁算并输出结果S的值。( 即计算 t=1,2,3,4 时,∑ 右边式子的值的和 S )

其中

1/x2 当 x < 9 时
G(x)= 0 当 x = 9 时
ln(x2 +5) 当 x > 9 时

[程序]

10 __(1)__ FNF(X)=__(2)__

20 S = 0

30 FOR T = 1 TO 4

40 Y = T * T + 2

50 __(3)__ 100

60 S = __(4)__

?0 NEXT T

80 PRTNT“S-”,S

90 END

100 G = 0

110 IF Y < 9 THEN __(5)__

120 IF Y > 9 THEN __(6)__

130 RETURN

试题四

阅读以下 C 程序,将程序的全部输出逐行写在答卷的(1)~(5)栏内。
[程序]

int test4( int n )

{

int d0,

m = n ;

while( m )

{

d = d*10+m%10;

m/=10;

}

return d == n;

}

int data[]={ 5,123,121,453,545 };

main()

{

int i;

for ( i=0;i<sizeof data/sizeof(int);i++ )

printf(“%5d;%s\n”,data[i],test4( data[i] ) ?“OK”;“NO”;

}

 

试题五  略FoxBASE )

阅读下列说明和流程图从下列的 3 道试题( 试题 6 至试题 8 )中任选 1 道解答。如果解答的试题数超过 1 道,则解答的前 1 道有效。

 

试题六

阅读以下程序说明和 BASIC 程序,将应填入__(n)__处的字句,写在答卷的对应栏内。
[程序1说明]

某工厂需要招聘三个工种( 代号为 1,2,3 )的技术工人各一名,现有三个工人 A,B,C 应聘录取,等待分配。已知每个工人从事不同工种所能获得的效益,如右表所示。

本程序在各种可能的分配方案中选择一种能取得最大总体效益的分配方案,即输出 A,B,C 三个工人应从事的工种代号和由此取得的最大总体效益数值(MAXT)。

效益

工 种

1 2 3

A 3 5 2
B 4 3 4
C 2 4 3

[程序1]

10 __(1)__ A(3),B(3),C(3)

20 FOR I=I TO 3

30 READ __(2)__

40 NEXT 1

50 MAXT=0

60 FOR I=I TO 3

70 FOR J=1 TO 3

80 FOR K=I TO 3

90 IF I=J OR __(3)__ THEN 140

100 T= __(4)__

110 IF T <= MAXT THEN 140

120 __(5)__

130 MAXT = __(6)__

140 NEXT K

150 NEXT J

160 NEXT I

170 PRINT “A:”;D;“B:”;E;“C:”;F;“MAX:”;MAXT

180 END

190 DATA 3,4,2,5,3,4,2,4,3
[程序2说明]

已知两个递增有序数组(假设各元素均不相同),本程序将其合并成一个新数组,并仍保持递增次序。用数组 A(100),B(100)存放原数组,C(200)存放新数组。变量 M,N( 1≤M≤100;1≤N≤100 )分别表示已知数组 A,B 中存放的元素个数。
[程序2]

10 DIM A(100),B(100),C(200)

20 READ M

30 FOR I:1 TO M

40 READ A(1)

50 PRINT A(1)

60 NEXT 1

70 READ N

80 FOR J=1 TO N

90 READ B(J)

100 PRINT B(J)

110 NEXT J

120 __(7)__ 160

130 FOR K=1 TO M+N

140 PRINTC(K)

150 NEXT K

155 END

160 1=1

170 J=1

180 K=1

190 IF A(1)>B(J) THEN 250

200 C(K)=A(1)

210 __(8)__

220 IF I>M THEN 320

230 K:K+1

240 GOTO __(9)__

250 C(K)=__(10)__

260 J=J+1

270 IF J <= N THEN 230

280 K=K+1

290 C(K)= __(11)__

300 I=I+1

310 IF I<=M THEN 280 ELSE __(12)__

320 K=K+1

330 C(K)=__(13)__

340 J=J+1

350 IF J<=N THEN __(14)__ ELSE RETURN

360 DATA 5

370 DATA 4,7,9,12,85

380 DATA 4

390 DATA -1,2,6,60

 

试题七

阅读以下程序说明和 C 程序,将应填入__(n)__处的字句,写在答卷的对应栏内。
[程序1说明]

函数 psortl() 实现将含 n 个整数的数组 a[] 的不同元素按从小到大顺序存于数组 a[] 中。

函数 psortl() 的实现方法是顺序考察 a[] 中元素,寻找当前考察元素 a[i] 在已确定的不同元素中的插入位置。如果 a[] 是一个新的不同元素,则插入之;否则,忽略该元素。
[程序1]

int psortl( int a[],int n )

{

int i,j,k,iow,high,mid,t;

for ( k=1,i=1;i<n;i++ )

{

low=0;

high= __(1)__ ;

while ( iow <= high )

{

mid = ( iow + high )/2;

if ( a[mid] >= a[] )

high = mid - 1;

else

low = mid+1;

}

if ( iow >= k,t __(2)__ )

{ t = a[i];

for ( j = __(3)__ ;j >= __(4)__ ;j-- )

a[j+1]=a[j];

a[ __(5)__ ] = t;

__(6)__ ;

}

}

return k;

}

int a[]:{5,7,5,6,4,3.4,6,7};

main()

{

int k,n;

for ( k=0;k<( sizeof a )/sizeof(int);k++)

printf( “%5d”,a[k] );

printf( “\n\n”);

n = psortl( a,( sizeof a )/sizeof(int));

for ( k=O;k<n;k++ )

printf(“%5d”,a[k] );

printf(“\n\n”);

[程序2说明]

函数 psort2() 实现将含 n 个整数的数组 a[] 的不同元素按从小到大顺序存于数组 a[] 中。

函数 psort2() 的实现方法是从未确定的元素列中找出最小元素并将 a[] 的第 i 最小元素交换至 a[i] 位置。如该最小元素比已确定的最后一个最小元素大,则将它接在已确定的元素序列的后面;否则,忽视该元素。
[程序2]

int psort2( int a[],int n )

{

int i,j,k,p,t

for( i=0,k=0;i< __(7)__ ;i++ )

{

for ( j=i+1;__(8)__ ;j<n ;j++ )

if ( a[p]>a[j])

p=j;

if ( p != i )

{

t=a[p];

a[p]=a[i];

a[i]=t;

}

if ( __(9)__ ) k++;

else if ( __(10)__ <a[i] )

__(11)__ = a[i]);

}

 return k;

}

int a[]={ 5,7,5,6,4,3,4,6,7 };

main()

{

int k,n;

for ( k=O;k<( sizeof a )/sizeof(int);k++ )

printf(“%5d”,a[k] );

printf(“\n\n”);

n=psort2( a,(sizeofa)/sizeof(int) );

for( k=0;k<n;k++ )

printf(“%5d”,a[k] );

printf( “\ n \n”);

}

 

试题八 略 FoxBASE 程序)

 回目录      老顽童校对整理 2003年4月