主题:[讨论]给我点题目(附上答案),加分!!
Saitor@love.com
[专家分:30] 发布于 2009-08-10 10:59:00
要考试了,给我点可能考的题目。
回复列表 (共9个回复)
沙发
phile [专家分:2310] 发布于 2009-08-10 17:24:00
考试?考什么?
板凳
phile [专家分:2310] 发布于 2009-08-10 17:24:00
江苏省信息夏令营么?
4 楼
phile [专家分:2310] 发布于 2009-08-11 08:42:00
我是南京的,也是参加这个比赛的!!
5 楼
gewenbo [专家分:450] 发布于 2009-08-11 17:20:00
2005年江苏省"信息与未来"小学生夏令营活动
计算机操作项目之一:程序设计试题
1, 【回文数个数】
如果一个正整数从左向右读与从右向左读均是一样,则称其为回文数。例如3、121、3223、12021都是回文数。
输入:任意给定的一个正整数n(0<n<=100000)
输出:一个正整数,表示[1,n]之间的回文数的个数。
【输入格式】键盘输入 ,无须合法性检验.
【输出格式】输出到屏幕 。
【样例】
输入 输出
325 41
2、 【对应关系】
给定两个长度相同的字符串A$和B$,如果A$中的一字符与B$中的一字符出现次数相同,则说此二字符是对应的;如果A$中所有字符分别对应于B$中所有字符,则说二字符串之间存在一个对应关系;要求算出两串之间存在的所有对应关系的个数(若无对应关系,则输出为0)。
例如: A$=”abac”, B$=”3132”,那么它们之间存在2个对应关系, 分别是:
a 3 a 3
b 1 b 2
c 2 c 1
【输入格式】键盘输入。只有两行,每行给出一个字符串,每个字符串全部由小写字母或数字组成,串的长度不超过20,而且串中最多出现10种不同字符。不必对输入做正确性检查。
【输出格式】一个正整数,表示输入字符串之间存在对应关系的个数。
【样例】
输入: 输出
abad 2
1231
CLS
DO: INPUT Y
IF Y = -1 THEN EXIT DO
OPEN " F:\DATA\2005\05T2\JS20" + LTRIM$(STR$(Y MOD 10)) + ".IN" FOR INPUT AS #1
INPUT #1, A$
INPUT #1, B$
REDIM A(20), A$(10), B(20), B$(10), SA(20), SB(20)
CLOSE
IA = 0
L = LEN(A$)
FOR I = 1 TO L
AA$ = MID$(A$, I, 1)
FOR J = 1 TO IA
IF AA$ = A$(J) THEN EXIT FOR
NEXT J
IF J = IA + 1 THEN IA = IA + 1: A$(IA) = AA$: A(IA) = 1 ELSE A(J) = A(J) + 1
NEXT I
'FOR I = 1 TO IA: PRINT A$(I); "=====>"; A(I): NEXT I: PRINT
IB = 0
FOR I = 1 TO L
BB$ = MID$(B$, I, 1)
FOR J = 1 TO IB
IF BB$ = B$(J) THEN EXIT FOR
NEXT J
IF J = IB + 1 THEN IB = IB + 1: B$(IB) = BB$: B(IB) = 1 ELSE B(J) = B(J) + 1
NEXT I
'FOR I = 1 TO IB: PRINT B$(I); "=====>"; B(I): NEXT I: PRINT
FOR I = 1 TO IA
SA(A(I)) = SA(A(I)) + 1
IF MI < A(I) THEN MI = A(I)
NEXT I
FOR I = 1 TO IB
SB(B(I)) = SB(B(I)) + 1
IF MI < B(I) THEN MI = B(I)
NEXT I
S = 1
FOR K = 1 TO MI
IF SA(K) <> SB(K) THEN PRINT "0": GOTO 1
IF SA(K) = 0 THEN 10
P = 1
FOR T = 1 TO SA(K): P = P * T: NEXT T
S = S * P
10 NEXT K
PRINT S
1 LOOP
END
3 【进制数】
给出一个正整数n(1≤N≤1023),将其化为10位二进制数,然后计算出二进制数中的“1”的个数,若1的个数为奇数,则在最高位前加上一个1,否则加上一个0,最后将在此基础上形成的11位二进制数,用3个十六进制数输出。
例 如:输入 23 化为二进制数为: 0000010111
因为1的个数是4个,在最高位前加0,得到:00000010111
输出:0H,1H,7H
再例如:输入 453 化为二进制数为: 0111000101
因为1的个数是奇数,所以在最高位前加1,得到:10111000101
输出:5H,CH,5H
【输入格式】键盘输入。一个正整数n。
【输出格式】根据形成的11位二进制数,用3个十六进制数输出。
【样例】
输入: 输出
453 5H,CH,5H
CLS
INPUT N
FOR I=1 TO 10
Y=N MOD 2:N=N\2
X$=LTRIM$(STR$(Y))+X$
IF Y=1 THEN S=S+1
NEXT I
IF S MOD 2=0 THEN X$="0"+X$ ELSE X$="1"+X$
FOR I=LEN(X$) TO 1 STEP -1
B=VAL(MID$(X$,LEN(X$)+1-I,1))
W=W+B*2^(I-1)
NEXT I
FOR I=1 TO 3
Y=W MOD 16:W=W\16
IF Y>9 THEN E$=CHR$(55+Y)+"H,"+E$ ELSE E$=LTRIM$(STR$(Y))+"H,"+E$
NEXT I
PRINT LEFT$(E$,LEN(E$)-1)
END
4 【走迷宫】
小明与许多同学一起参加了今年的“信息与未来”小学生夏令营活动。夏令营的组织者设计安排了许多有趣的活动,走迷宫就是其中的一项。
迷宫由N*N个方格组成,每个方格均被组织者事先标上了“0”或“1”(左上角第一个方格和右下角最后一个方格一定是“0”)。当你进入左上角的第一个方格中时,看到相邻的方格是“0”时则可以进入,而如果是“1”时则表示此路不通。
小明被告之:从迷宫的左上角第一个方格的入口处准备进入时,你可得到一个记有N*N分值的记分表,每经过一个标有“0”的方格,记分表将自动扣去1分,当走到右下角最后一个方格的出口处时,将显示你手中的记分表剩余的分值。
夏令营的组织者将只奖励所有参加此项活动中,记分表剩余的分值最多的营员。
【输入格式】你应当从指定的文件中读取相关数据。
每个文件的第一行是一个整数N(3≤N≤40),接下来有N行,每行均有N个由0 和1组成的数据
【输出格式】输出至屏幕,一个整数(记分表剩余的分值)
【样例】
输入 输出
4 9
0011
1000
0001
1000
OPEN " F:\DATA\2005\05T4\IN1.IN" FOR INPUT AS #1
INPUT #1, N
DIM X(500), Y(500), Z(500), A(N, N), V(4, 2)
CLS
X0 = 1: Y0 = 1
XE = N: YE = N
FOR I = 1 TO N
INPUT #1, M$
FOR J = 1 TO N
A(I, J) = VAL(MID$(M$, J, 1))
NEXT J, I
FOR I = 1 TO 4: FOR J = 1 TO 2
READ V(I, J)
NEXT J, I: DATA 1,0,0,1,0,-1,-1,0
P = 1: X(P) = X0: Y(P) = Y0: I = 0
WHILE P > 0
I = I + 1
IF I <= 4 THEN
X = X(P) + V(I, 1): Y = Y(P) + V(I, 2)
IF X > 0 AND X <= N AND Y > 0 AND Y <= N THEN
IF A(X, Y) = 0 THEN
P = P + 1: X(P) = X: Y(P) = Y: Z(P) = I: A(X, Y) = 2: I = 0
IF X = XE AND Y = YE THEN PRINT N * N - P
END IF
END IF
ELSE
I = Z(P): P = P - 1
END IF
WEND
END
7 楼
phile [专家分:2310] 发布于 2009-08-12 08:55:00
5楼程序烦!
8 楼
zhiaini [专家分:10] 发布于 2009-08-12 11:46:00
5楼的程序可以简化
9 楼
gewenbo [专家分:450] 发布于 2009-08-15 15:35:00
是可以简化,我题目答案都是在网上搜到的
我来回复