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

流程图试题 略


BASIC试题

试题1

阅读下列BASIC程序,将运行结果按输出格式写在答卷的对应栏内。
①[程序]

10 READ X,Y,Z

20 U=X+Y+Z

30 RESTORE

40 READ X,Y

50 READ X,Y,Z

60 V=X+Y+Z

70 PRINT U,V

80 DATA 10,20,30,40,50,60

90 END
②[程序]

10 Y=14

20 DEFFNA(X)=A↑2+2*X

30 Y=Y+FNA(FNA(3))

40 PRINT“Yl=”;Y,

50 Y=(Y-FNA(2))/2

70 END
③[程序]

10 A$=“9AABCDDCAB”

20 FOR I=6 TO 2 STEP-2

30 X$=MID$(A$,I,1)

40 Y$=LEFT$(A$,1)

50 Z$=RIGHT$(A$,1)

60 Z$=X$+Y$+Z$

70 NEXT I

80 PRINT Z$

90 END
④[程序][假设真为-1,假为O]

10 FOR X=0 TO l

20 FOR Y=1 TO 2

30 FOR Z=2 TO 3

40 PRINT (X=0 OR Y=1)+(Z=2 AND X=Y)+NOT(Z=3);

50 NEXT Z,Y,X

60 END

 

试题2

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

某级数前两项 A1=1,A2=1,以后各项具有如下关系 An=An-2+2An-1

本程序依次对于整数 M=100,1000 和 10000 求出对应的 n 值,使其满足:

Sn<M 且Sn+1≥M 这里 Sn=Al+A2+…+An

例:对于 M=100 有 S6=70,S7=169,因此输出 n=6。
[程序]

10 A1=1:A2=1

20 S= __①__

30 N= __②__

40 M= __③__

50 FOR I=1 TO 3

60 M=Mx 10

70 T=A1+2*A2

80 S=S+T

90 N=N+1

100 __④__

110 __⑤__

120 IF ⑥ THEN 70

130 PRINT “M=”;M,“N=”;N

140 NEXT I

150 END

 

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

本程序是将一正整数序列 { k1,k2 ,…,kn } 重新排列成一个新的序列。新序列中,比 k1 小的数都在 kl 的前面( 左面 ),比 kl 大的数都在 k1 的后面( 右面 )。

例:当 n=9 时,序列 ;

{ 6, 8, 9, l, 2, 5, 4, 7, 3 }
经重排后成为

{ 3, 4, 5, 2, 1, 6, 8, 9, 7 }
[程序]

10 INPUT “N=”;N

20 IF N<2 THEN 10

30 __⑦__

40 FOR I=1 TO N

50 INPUT A(I):IF __⑧__ THEN 50

60 NEXT I

70 FOR I=1 TO N:PRINT A(1),:NEXT I:PRINT

80 T=1

90 FOR I=2 TO N

100 IF __⑨__ THEN 170

110 X=A(1)

120 FOR J=1 TO 2 STEP一1

130 __⑩__

140 NEXT J

150 A(1)=X

160 __⑾__

170 NEXT 1

180 PRINT

190 FOR I=1 TO N:PRINT A(1),:NEXT I

200 END

 

C语言试题

试题1

阅读下列C语言程序,将程序的运行结果依次填入答卷的①~⑨栏内。
[程序]

#include <stdio.h>

#define LEN 8

main()

{ int j,c;

static char num[2][LEN+1]={ "17208980","28219198"};

c=0;

for ( j=LEN-1;j>=0;j-- )

{

c+=hum[0][j]+num[1][j]-2*'0';

printf( "%d\n",c );

num[0][j]=c%10+'0';

c=c/10;

}

printf( "%s\n",&num[0][0] );

}

 

试题2

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

函数 days(y,m1,d1,m2,d2) 计算 y 年 m1 月 d1 日与同年的 m2 月 d2 日之间的天数 (m2≥m1),并把计算结果作为函数的返回值。若 m1=m2 且 dl=d2,则算 1 天。在闰年时,2 月份共有 29 天。闰年的年号由如下方式确定:该年号能被 4 整除但不能被 100 整除,或者该年号能被 400 整除。
[程序]

int days( y,mi,d1,m2,d2 )

int y,mi,d1,m2,d2;

{

int i,d;

y=( y%4 == 0 __①__ y%100 != 0 __②__ y%400 == 0 )? 1:0 ;

d=0-d1;

for ( i=mi;i<m2;i++ )

switch(i){

case 1:case 3:case 5:case 7:

case 8:case 10:case 12:

d+=31;

__③__ ;

case 2:d=d+28+y;

break;

case 4:case 6:case 9:case 11:

__④__ ;

return(d+d2+1);

}

 

试题3

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

本程序的功能是根据输入的 N 个抽样数据( 实数 ),求出其中的最大值 max,最小值 min 和平均值 ave,并且计算出抽样数据的最大误差值 max_err。如果该抽样最大误差值超过了允许的最大误差值 std_err 时,报告该批产品不合格。

其中,最大误差值 max_err 是以下两个数中绝对值最大者:

max-std_val;

min-std_ val;( std_ val 是标准抽样值 )。

程序中规定抽样数据不超过 100 个,即 l≤N≤100。

函数 inputdata 用于输入 N 个抽样数据。

函数 abs(x) 用于返回实数 x 的绝对值。
[程序]

#include <stdio.h>

#define MAXIMUM(x,y)(x>y) ? x:y;

main()

{ float data[100],max,min,ave

float max_err,std_err,std_val,total,abs();

int n,loop;

do { printf( "Input N=? (1<=N<=100):" );

scanf( "%d",sm );

} while ( 1> __①__ >100 );

inputdata(data,n);

printf( "Input STD_ERR and STD_VAL:" );

scanf( "%f%f",&std_err,&std_val );

max=min=data[0];

total= __②__ ;

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

{ if ( __③__ ) max=data[loop] ;

if ( __④__ ) min=data[loop] ;

total += data[loop] ;

}

ave=total/(float)n ;

max_err=MAXIMUM( abs(max-std_val),abs(min-std_val) )

printf( "MAX=%f,MIN=%f,AVE=%f,MAX_ERR=%f,",max,min,ave,max_err );

if ( max_err>std_err ) printf( "Wasteproducts!\n" );

elseprintf( "OK!\n" );

}

 

inputdata(a,n)

float *a;

int n;

{ int i;

for ( i=0;i<n;i++) scanf( "%f", __⑤__ );

}

 

float abs(x) ’

float x;

{return( __⑥__ );}

 

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