回 帖 发 新 帖 刷新版面

主题:小学信息竞赛题,望高人解答

请将程序运行结果写在右边
1、DIM  b(10)
FOR  i = 10  TO  20
          y = i MOD 10: x = INT(x / 10)
          IF x> y THEN  GOTO  30
          x = i * i: j = 11
10  IF x = 0 THEN  GOTO 20
           j = j - 1: b(j) = x MOD 10: x = INT(x / 10)
          GOTO  10
20 y = 0
          FOR  x = j  TO  9
            IF b(x) > b(x + 1) THEN y = 1
          NEXT x
          IF y = 0 THEN PRINT  i, i * i
30 NEXT i
END
输出结果:

2、DIM  a(100)
     INPUT  n
    FOR  i = 1 TO  n
      INPUT  x
      a(x) = a(x) + 1
    NEXT i
    FOR  i = 100 TO 1 STEP -1
DO  WHILE  a(i) <>0 
        PRINT i;
        a(i) = a(i) - 1
      LOOP
 NEXT  i
   END
输入:10
23,17,26,14,15,39,47,81,29,44
输出结果是:

3、INPUT x, y
     x0 = x: y0 = y
DO  WHILE  x<> y 
     IF  x > y  THEN
       x = x - y
    ELSE
       y = y - x
    END  IF
    LOOP
y = INT(x0 * y0 / x)
    PRINT x, y
   END
输入:108,81
输出结果是:

4、DIM a(10, 10)
   INPUT  n
   a(1, 0) = 0: a(1, 1) = 1: a(1, 2) = 0
   FOR  i = 2  TO  n
      a(i, 0) = 0
      FOR j = 1 TO i
         a(i, j) = a(i - 1, j - 1) + a(i - 1, j)
      NEXT j
      a(i, i + 1) = 0
   NEXT i
   FOR i = 1 TO n
      PRINT a(n, i);
   NEXT i
 END
输入:7
输出:

5、DIM b(3, 10)
   READ n
   FOR  i = 1  TO  10
      READ b(1, i): b(2, i) = 1: b(3, i) = 0
   NEXT i
   FOR  i = n - 1  TO  1  STEP -1
      l = 0: k = 0
      FOR j = i + 1 TO  n
         IF (b(1, i) <= b(1, j)) AND (l < b(2, j)) THEN
            l = b(2, j)
            k = j
         END IF
      NEXT j
      IF l > 0 THEN
         b(2, i) = 1 + l
         b(3, i) = k
      END IF
   NEXT I
   j = 1
   FOR i = 2 TO n
      IF b(2, i) > b(2, j) THEN j = i
   NEXT i
   PRINT b(2, j)
DO  WHILE  j<> 0
       PRINT b(1, j);
       j = b(3, j)
     LOOP 
END
DATA  10,23,18,21,45,61,104,71,83,91,87
输出结果是:
   
6、
10  FOR J=3  TO  100
20    A=FIX(SQR(J)) : T=1 :B=0
30    FOR  X=2  TO  A
40    IF  J/X =INT(J/X)  THEN T=0 : GOTO 70
50    NEXT  X
60    IF T=1  THEN B=B+1 :Y(B)=J
70    NEXT  J
80    I=0 : J=0
85  WHILE  I<=B
90    I=I+1 : IF  Y(I)>70  THEN  PRINT  Y(I),
100    J=J+1 : I=J
110    WEND
120    END
输出:

7、
10    CLS
20    N=20
30  DIM   A(N)
40    INPUT  K
50    L=K : J=1
60    IF  K<J  THEN  90
70     A(J)=J : K=K-J : J=J+1
80    GOTO  60
90    L=J-1
100    IF K=0  THEN 130
110    A(L)=A(L)+1 : K=K-1 : L=L-1
120    GOTO 100
130    FOR  I=1  TO  J-1
140    PRINT  A(I);
150    NEXT  I
160    END
输入:39        输出:

8、
10 DATA  35,87,65,36
15 P=0
20 READ X,Y
30 GOSUB  1000
40 P=P+Z
50 READ X,Y
60 GOSUB  1000
70 P=P+Z
80 PRINT  “P=”; P
90 END
1000    IF  X>Y  THEN T=X :X=Y :Y=T
1005  W=0
1010    WHILE  X<>0
1020    IF X MOD 2<>0 THEN  W=W+Y
1030    Y=Y*2 :X=X\2
1040    WEND
1050    Z=W
1060    RETURN
输出:


【完善程序】
1、输入N个任意数,将其中重复的数删得只剩下一个。
INPUT “N=”; N
FOR I = 1 TO N
  INPUT A(I)
NEXT I
______        
DO
  X = I + 1
  DO
    IF A(I) = A(X) THEN
      FOR J =______           
          ______          
      NEXT J
      ______            
    ELSE
      X = X + 1
    END IF
  LOOP UNTIL X > N
  _______          
LOOP UNTIL I >= N
FOR I = 1 TO N
  PRINT A(I);
NEXT I : END

2、键入N,表示行数(1<N<20),打印如下形式的三角形。
如:N=7
                1
               232
              34543
             4567654
            567898765
           67890109876
          7890123210987
10  INPUT “N=”; N
20  FOR I = 1 TO N
30  PRINT TAB(20-I);
40  X = I
50  FOR J = 1 TO I
60  IF X > 9 THEN______             
70  PRINT CHR$(X+48);
80  X = X + 1
90  NEXT
100 X =______:IF______ THEN 160
110 FOR J = 1 TO I - 1
120 IF______THEN X = X + 10
130 PRINT CHR$(X+48);
140 X = X – 1 : 150 NEXT J : 160______: 170 NEXT I

3、调用子程序,求以下四个数的最大公约数
FOR I = 1 TO 4
  READ A(I)
NEXT
DATA 147, 210, 315, 735
FOR I = 1 TO____
    _______      
NEXT I
PRINT “GCD=______”;       
END
10 DO
Q = A(I) \ A(I+1)
R =_______   
IF R = 0 THEN RETURN
   ______: A(I+1) = R
LOOP

4、以下程序能完成下列三项功能:
1)读入20个大写英文单词,统计单词IS出现的次数T;
2)测试这20个英文单词的平均长度;
3)将这20个英文单词按字典顺序排列输出,并打印原来的序号
N = 0 : T = 0 : X$= “IS”
_______           
FOR I = 1 TO 20
  PRINT “<”; I; “>”; 
INPUT A$(I)
B(I) = I
NEXT I
FOR I = 1 TO 20
  N =______
  IF______THEN T = T + 1 : 
NEXT I
PRINT “单词IS出现的次数=”;T, “单词的平均长度=”; N/20
    FOR I = 1 TO ______:FOR J = I + 1 TO 20
IF______THEN_______:______          
   NEXT J, I
    FOR I = 1 TO 20
    PRINT “[“;I;”]”; A$(I); “——>”; _______
    NEXT I
END

5、有一些分子、分母都是两位数的真分数,且分子的个位数与分母的十位数字相同,若将该分数的分子(用变量M表示)的个位数字和分母(N)的十位数字同时划去,所得到的结果正好等于原分数约分后的结果。例如,16/64=1/4就是其中的一个。找出所有满足条件的真分数。
   10 FOR I = 1 TO 9 :FOR J = 1 TO 9 :______ 
   20 IF ______THEN 60
   30 M = _______:N = ______       
   40 IF  ______ THEN 60
   50 IF  ______THEN PRINT J*10+I; “/”; I*10+K
   60 NEXT K, J, I : END
6、    【问题描述】从1,2,……,N这N个自然数中,任取R个数进行组合,(4≤N≤8,1≤R<N)然后列出全部组合。
例如:当N=5,R=3时,列出的全部组合如下:
1 2 3     1 2 4     1 2 5
1 3 4     1 3 5     1 4 5
2 3 4     2 3 5     2 4 5
3 4 5
S=10
【程序说明】对任给出的R和N,则
第一个组合为1,2,……,R
然后变化第R位;
第二个组合为1,2,……,R+1
继续变化第R位,可以变到N;然后再变化第R-1位,R-2位,……,直至第1位的变化。
用数组B(20)记录组合,S记录组合总数。
【程序清单】
CLS
DIM B(20)
INPUT N,R
①______       
FOR I = 0 TO R
  B(I)=I
NEXT I
DO WHILE ②______          
  S=S+1
  FOR I = 1 TO R
PRINT B(I);“ ”;
  NEXT I
  PRINT
  J=R
  DO WHILE ③______                 
J=J-1
  LOOP
  B(J)=B(J)+1
  FOR I = J+1 TO R
     B(I)=B(I-1)+1
  NEXT I
LOOP
PRINT “S=”;S
END
7、    对50位同学的数学成绩按100、90-99、80-89、70-79、60-69、50-59、0-49进行分段统计(成绩随机产生)。
   10 ________:FOR I = 1 TO 50
   20 A(I) = INT(______) :NEXT I
   30 FOR I = 1 TO 50 :A = _______       
   40 S(A) = S(A) + 1 :NEXT I
   50 PRINT “100分:”;_______       
   60 FOR I = 9 TO______STEP_______      
   70 PRINT _______;S(I)
   80 NEXT I :PRINT “0-49:”;_______       
   90 END

8、    下图中的九个数字分成三段,按顺时针方向组成一个两位数、一个三位数、一个四位数,且满足等式:两位数×三位数=四位数
10 A$ = “13857964213857964”
20 FOR I = 1 TO 9
30 B$ = MID$(A$,______)
40 C$ = MID$(A$, I+2, 3)
50 D$ = MID$( A$,______ )
60 B = VAL(B$) :C = VAL(C$) :D = VAL(D$)
70 IF _______THEN PRINT B; “*”; C; “=”; D
80 NEXT I

9、连队共有103人(含连长、副连长),连长要选派一人去完成一项艰巨的任务,许多人都在争此任务,副连长也想去,于是他给连长出了个主意,让全体指战员排成一列,由连长在队外进行1、2报数,凡报到单数者退出,余者再1、2报数,单数退出……直到剩下一人即被选中执行任务。聪明的副连长应站在哪个位置才能被选中?
10 DIM ______
15 J = J + 1 :P = P + 1
20 IF A(P)=1 THEN ______:GOTO 30
25 IF J MOD 2 <> 0 THEN A(P) = 1 :______        
30 IF S = 101 THEN 50
35 IF P = 102 THEN _______ :J = 0
40 GOTO 15
50 FOR I = 1 TO 102 :IF ______THEN PRINT I, 
60 NEXT I

10、将输入字串中的连续空格压缩为一个空格后送到另一个字串中输出。
10 INPUT “A$=”; A$ :B$=”” :N=______         
20 FOR I = 1 TO N :FOR J = ______      
30 IF ______ <> ” “ THEN 50
40 NEXT J
50 IF  _______THEN B$ = B$ + “______“
60 B$=B$+______ :I= ______   
70 NEXT I :PRINT “B$=”; B$ :END


麻烦大家了,我们当家长不称职啊,计算机、奥数这些都不懂的,不知道怎么教小孩,在外面上课也是一知半解的,哎[em10][em10][em10]。我的邮箱decemberine@hotmail.com,谢谢大家了

回复列表 (共13个回复)

沙发

第一,如果家长什么都会了,就不要学校了!!
第二,这些问题是basic问题,不是vb问题。
但是我还是给你做一下。
1、DIM  b(10)
FOR  i = 10  TO  20
          y = i MOD 10: x = INT(x / 10)
          IF x> y THEN  GOTO  30
          x = i * i: j = 11
10  IF x = 0 THEN  GOTO 20
           j = j - 1: b(j) = x MOD 10: x = INT(x / 10)
          GOTO  10
20 y = 0
          FOR  x = j  TO  9
            IF b(x) > b(x + 1) THEN y = 1
          NEXT x
          IF y = 0 THEN PRINT  i, i * i
30 NEXT i
END
输出结果:
12   144
13   169
15   225
16   256
17   289

板凳

谢谢了

3 楼

2、DIM  a(100)
     INPUT  n
    FOR  i = 1 TO  n
      INPUT  x
      a(x) = a(x) + 1
    NEXT i
    FOR  i = 100 TO 1 STEP -1
DO  WHILE  a(i) <>0 
        PRINT i;
        a(i) = a(i) - 1
      LOOP
 NEXT  i
   END
输入:10
23,17,26,14,15,39,47,81,29,44
输出结果是:
81  47  44  39  29  26  23  17  15  14

4 楼

3、INPUT x, y
     x0 = x: y0 = y
DO  WHILE  x<> y 
     IF  x > y  THEN
       x = x - y
    ELSE
       y = y - x
    END  IF
    LOOP
y = INT(x0 * y0 / x)
    PRINT x, y
   END
输入:108,81
输出结果是:
27            324

5 楼

4、DIM a(10, 10)
   INPUT  n
   a(1, 0) = 0: a(1, 1) = 1: a(1, 2) = 0
   FOR  i = 2  TO  n
      a(i, 0) = 0
      FOR j = 1 TO i
         a(i, j) = a(i - 1, j - 1) + a(i - 1, j)
      NEXT j
      a(i, i + 1) = 0
   NEXT i
   FOR i = 1 TO n
      PRINT a(n, i);
   NEXT i
 END
输入:7
输出:
1  6  15  20  15  6  1

6 楼

5、DIM b(3, 10)
   READ n
   FOR  i = 1  TO  10
      READ b(1, i): b(2, i) = 1: b(3, i) = 0
   NEXT i
   FOR  i = n - 1  TO  1  STEP -1
      l = 0: k = 0
      FOR j = i + 1 TO  n
         IF (b(1, i) <= b(1, j)) AND (l < b(2, j)) THEN
            l = b(2, j)
            k = j
         END IF
      NEXT j
      IF l > 0 THEN
         b(2, i) = 1 + l
         b(3, i) = k
      END IF
   NEXT I
   j = 1
   FOR i = 2 TO n
      IF b(2, i) > b(2, j) THEN j = i
   NEXT i
   PRINT b(2, j)
DO  WHILE  j<> 0
       PRINT b(1, j);
       j = b(3, j)
     LOOP 
END
DATA  10,23,18,21,45,61,104,71,83,91,87
输出结果是:
7
18  21  45  61  71  83  91

7 楼

6、(此题数组Y没有声明!!!!)
10  FOR J=3  TO  100
20    A=FIX(SQR(J)) : T=1 :B=0
30    FOR  X=2  TO  A
40    IF  J/X =INT(J/X)  THEN T=0 : GOTO 70
50    NEXT  X
60    IF T=1  THEN B=B+1 :Y(B)=J
70    NEXT  J
80    I=0 : J=0
85  WHILE  I<=B
90    I=I+1 : IF  Y(I)>70  THEN  PRINT  Y(I),
100    J=J+1 : I=J
110    WEND
120    END
输出:
97

8 楼

7、
10    CLS
20    N=20
30  DIM   A(N)
40    INPUT  K
50    L=K : J=1
60    IF  K<J  THEN  90
70     A(J)=J : K=K-J : J=J+1
80    GOTO  60
90    L=J-1
100    IF K=0  THEN 130
110    A(L)=A(L)+1 : K=K-1 : L=L-1
120    GOTO 100
130    FOR  I=1  TO  J-1
140    PRINT  A(I);
150    NEXT  I
160    END
输入:39 
输出:
 1  2  3  4  5  6  7  8  9

9 楼

8、
10 DATA  35,87,65,36
15 P=0
20 READ X,Y
30 GOSUB  1000
40 P=P+Z
50 READ X,Y
60 GOSUB  1000
70 P=P+Z
80 PRINT  “P=”; P
90 END
1000    IF  X>Y  THEN T=X :X=Y :Y=T
1005  W=0
1010    WHILE  X<>0
1020    IF X MOD 2<>0 THEN  W=W+Y
1030    Y=Y*2 :X=X\2
1040    WEND
1050    Z=W
1060    RETURN
输出:
P= 5385

10 楼

继续帮忙啊,还有几道

我来回复

您尚未登录,请登录后再回复。点此登录或注册