试题 七 阅读以下程序说明和 BASIC 程序,将应填入程序中 (n) 处的字句,写在答卷的对应栏内。 [程序说明] 对于十进制数成立如下一组等式: 9 5 1 + 2 = 11 9 5 12 + 3 = 111 9 5 123 + 4 = 1111 …… 9 5 12345678 + 9 = 111111111 本程序用来验证对于任何R进制(3 < 10)数,都成立类似于上列的一组等式。程序输入r(r进制的基) 和任一正整数M(1 < 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 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乘[1] [2] 下一页 |