试题一 阅读下列
BASIC 程序,将应填入__(n)__处的字句,写在答卷的对应栏内。
A = 1 B = -1 IF A > B AND B = ABS(B) THEN GOTO P A = 2 IF A = B OR NOT(A+B)<(A-B)THEN GOTO P A = 3 IF(A = 2 OR B-1 = -A)OR(A = B+4 AND NOT (A <> 3) THEN GOTO P A = 4 P:PRINT A+ABS(B) END 程序执行后,输出结果为__(1)__。 [程序1.2] DECLARE FUNCTION P$(X,Y) COMMON SHARED A,B,C$ INPUT “A=”,A INPUT “B=”,B C$=“TEST-RESULT” PRINT P$(A,B) END
FUNCTION P$(X,Y) IF X >= Y THEN Z$ = MID$(C$,6,6)+“1=”+STR$((SQR(X)+ABS(Y))/2) ELSE Z$ = MID$(C$,6,6)+“2=”+STR$(INT(X+Y)*100) END IF P$ = Z$ END FUNCTION
C$=“0123456789ABCDEF” I=16 DIM X$(I) L: INPUT“S=”,S INPUT“D=”,D IF (S < 2 OR S > 16 OR D < 0 OR D > 32767 THEN PRINT “ERROR” GOTO L END IF DO WHILE D <> 0 A = D D = INT(A/S) B = A-D*S X$(I) = MID$(C$,B+1,1) I = I-1 LOOP FOR J = I+1 TO 16 PRINT X$(J); NEXT J END OPTION BASE 1 DIM B(6) K = 1 WHILE K <= 6 READ B(K) K = K+1 WEND FOR K1 = 1 TO 5 L = B(K1+1) FOR K2 = K1 TO 1 STEP –1 IF L > B(K2) THEN GOTO S END IF B(K2+1) = B(K2) NEXT K2 S: B(K2+1) = L NEXT K1 I = 1 DO UNTIL I > 6 PRINT B(I);” ”; I = I+1 LOOP DATA 9,-1,4,18,-5,7 END
阅读以下与 C 语言有关的叙述,将应填入__(n)__处的字句,写在答卷的对应栏内。 1、已知 int x = 1,y = 2,z = 3; 则 z + = x > y ? ++ x : ++ y的值是__(1)__。 2、 已知int a[ ] ={10,9,8,7,6},*p = a; 则*(p+1)*(p+2)[2]的值是__(2)__。 3、 已知char ch ; 则判别 ch 是英文字符的逻辑表达式是__(3)__。 4、 已知int p( ),( *q )( ); 则
p 是__(4)__,而 q 是__(5)__.
试题四 阅读以下程序说明和
BASIC 程序,将应填入__(n)__处的字句。写在答卷的对应栏内。
本程序按得分从大至小打印出十佳运动员的编号、得分和名次。运动员编号、得分由 DATA 语句提供,分别存入在数组 N 和数组 M 中。每个运动员得分最高为 120 分。得分从大到小排序方法采用冒泡法,为提高排序速度,算法中增加了下列措施:若在某一次冒泡过程中发现没有发生过数据交换,则表示数据已排序完毕,此时可提前结束排序。 具有相同得分的运动员,其名次相同。例如前 4 位运动员排序后的名次情况如下:
DIM N(10),M(10),L(10) FOR I = I TO 10 READ N(I),M(I) NEXT I’ I = 10 S1: FLAG = 0 FOR__(1)__ IF M(J) < M(J-1) THEN __(2)__ SWAP N(J), N(J-1) SWAP M(J),M(J-1) FLAG = 1 S2: NEXT J I = I-1 IF__(3)__ THEN GOTO S1 PRINT“编号”,“得分”,“名次” L(1) = 1 FOR I = 2 TO 10 PRINT N(I-1),M(I-1),L(I-1) IF M(I-1) = M(I) THEN __(4)__ ELSE __(5)__ NEXT I PRINT N(10),M(10),L(10) DATA 1,102,2,118,3,99,4,107,5,117 DATA 6,115,7,111,8,117,9,102,10,104 END
阅读以下程序说明和
C 语言,将应填入__(n)__处的字名,写在答卷的对应栏内。
本程序利用 Machin 公式求 π 的值。Machin 公式的可表示如下: π = 16 arctan(1/5 ) - 4 arctan(1/239 ) 其中 arctan 用如下形式的级数计算: arctan(x) = x - x3/3 + x5/5 + x7/7 + … 直到级数的某项绝对值不大于
10-15 为止;π和 x 均为双精度实数。 main() { double a,b; ____(1)____; a = ____(2)____; b = ____(3)____; printf(“PI=%20.15f\n”,a-b); } double arctan(double x) { int I; double r, e, f, sqr; sqr = x*x; r = 0; e = x; I = 1; white (e/I > le-15) { f = e/I; r = (i%4 == 1) ? ___(4)____; e = e*sqr; I += 2; } return____(5)____; }
试题七 阅读以下程序说明和
BASIC 程序,将应填入__(n)__处的字句,写在答卷的对应栏内。
本程序中自定义函数TSIN(x)是按泰勒展开式计算 SIN x 的近似值。SIN x 的展开式为:
计算精度为 10-6 。变量 T 用于存放展开式的一项,利用递推关系可求得展开式的下一项。当某项的绝对值小于计算精度时,停止累加,累加和即为该精度下的 SIN x 的近似值。 利用该自定义函数计算如下公式并输出结果
其中R、S的值由键盘输入 REM MAIN DECLARE FUNCTION TSIN (X) INPUT “R =”,R INPUT”S =”, S IF R*R <= S*S THEN ____(1)____ ELSE K = TSIN(R*S)/2 END IF PRINT K END
FUNCTION TSIN (X) P = .000001 G = 0 T = X N = 1 DO UNTIL____(2)____ G = ____(3)____ N = N+1 T = ____(4)____ LOOP ____(5)____ END
FUNCTION 阅读以下程序说明和
C 程序,将应填入__(n)__处的字句,写在答卷的对应栏内。 本程序用于寻找并输出 11~999 之间的数
m,它满足 m,m2 和 m3 均为回文数。所谓回文数是指其各位数字左右对称的整数,例如
121,676,94249 等。满足上述条件的数如 m =
11
,m2 = 121,m3 = 1331 皆为回文数。确定回文数的重要一步是确定一个整数的逆序数,即将该整数的各个数字从左至右逆序排列形成的整数,如
103 的逆序数为 301 。
main ( ) { long m; for (m = 11; m < 1000; m++) { if (symm(m) && ___(1)___ ) printf ("m = %41d, m*m = %61d, m*m*m = %81d/n", m, m*m, m*m*m); } } int symm(long n) { long i, m; ____(2)_____; ____(3)____; while (i) { m = m*10 + i % 10; ____(4)____; } return (____(5)____); }
试题九 略(FoxBASE)
试题十 阅读以下程序说明和
BASIC 程序,将应填入__(n)__处的字句,写在答卷的对应栏内。
为减少存贮空间或数据通信中的信息量,经常需要对原始数据进行压缩。下面给出一种压缩规则: (1)当原始数据中连续出现 N(N>1) 个相同的数 x 时,则在压缩数据中相继存放数 N 和数 x。 (2)当原始数据中连续出现 M(M>0) 个相邻不相同的数(即每个数与其相邻的数均不相同)时,则压缩数据中先存入数 -M,再存放这 M 个相邻不相同的数。 (4) 在压缩的数据中,数的存放次序与原始数据中数的出现次序相一致,并在压缩数据的最后加上数 0 作为压缩数据的结束标志。例如: 原始数据中有以下数:35,22,22,22,10,5,-2,19,19,19,19 被压缩后的数据为:-1,35,3,22,-3,10,5,-2,4,19,0 本程序对输入的已压缩的数据进复原。程序中数组
PACKED 存放已压缩的数据,其长度 N1 由用户输入。数组
UNPACK 存入复原后的原始数据,假设其长度 200
已足
INPUT “N1=”,N1 DIM PACKED (N1),UNPACK(200) FOR I = I TO N1 INPUT PACKED (I) NEXT I I = 1 J = 0 DO WHILE PACKED (I)<>0 L = PACKED(I) IF L > 0 THEN FOR K = 1 TO L UNPACK(J+K) = __(1)__ NEXT K J = J+L I = I+2 ELSE FOR K = ____(2)____ UNPACK(J+K) = ____(3)____ NEXT K J = ____(4)____ I = ____(5)____ END IF LOOP FOR I = 1 TO J PRINT UNPACK(I) NEXT 1 END 阅读以下程序说明和
C 程序,将应填入____(n)____处的字句,写在答卷的对应栏内。
本程序中定义的函数
sdel(s) 实现的功能是将已知字符串 s 中的前导空白符和尾随空白符删去并将字符串中间部分的连续多个空白符删减为一个空白符。
char *sdel(char *s) { char p=s,q=s; for( ;____(1)____;s++); /*删去前导空白符*/ for( ; s; ) /遍历 s 字符串其它字符*/ { q++ = s; if(*s != ’ ‘) ___(2)___; else while(____(3)____) s++; } if (q >p &&*(q-1) ==‘ ’) /*设定字符串结束符*/ ____(4)____; else *q = ‘\0’; return____(5)____; } main() { char str[] = “ We are Chinese ” printf(“%s\n”,sdel(str)); }
|