回 帖 发 新 帖 刷新版面

主题:请各路高手帮忙解答,万分感谢!

1.    已知有以下由自然数1,2,3…N(N〈1000)按顺序组成的螺旋图形,在数2处拐第一个弯,在数3处拐第二个弯,在数5处拐第三个弯….。
请编程从键盘输入数字X(X〈50),则输出第X个拐弯点处的数字。(24分)
      21  22  23
      20   7   8   9  10
      19   6   1   2  11
      18   5   4   3  12
      17  16  15  14  13
          (N=23时)
  2、若发行一套四种不同面值(为自然数)的邮票,限定使用时不超过3枚,为了能连续贴出1,2,...,N的面值, 编程求如何确定四种面值,使 N 最大?(输出应发行哪四种面值及此时N的最大值)(16分)

3、今有一n×n的表格(n<10)),每个格子的表示方法如下图:
(1,1)    (1,2)    (1,3)    (1,4)    &#8226;&#8226;&#8226;    (1,n)
(2,1)    (2,2)    (2,3)    (2,4)    &#8226;&#8226;&#8226;    (2,n)
(3,1)    (3,2)    (3,3)    (3,4)    &#8226;&#8226;&#8226;    (3,n)
(4,1)    (4,2)    (4,3)    (4,4)    &#8226;&#8226;&#8226;    (4,n)
&#8226;&#8226;&#8226;    &#8226;&#8226;&#8226;    &#8226;&#8226;&#8226;    &#8226;&#8226;&#8226;    &#8226;&#8226;&#8226;    &#8226;&#8226;&#8226;
(n,1)    (n,2)    (n,3)    (n,4)    &#8226;&#8226;&#8226;    (n,n)
请编程,若键盘输入某一格子的位置,则输出所有与该格子不在同行、同列及对角线的所有格子。非编程方法不给分。(20分)
4、A$为由键盘输入的字符串,它由字符a,b,c,...,x,y,z中的若干个不重复的字符组成。若a<b<c...<x<y<z,请编程将字符串A$按升序排序后输出。(20分)
  如:输入bgf,则输出:bfg。

5、从键盘输入四个自然数,请用这四个自然数组成一个不含括号的加减法混合运算题,使该题所得结果最小(但不能为负值,而且运算的中间结果也不能为负值)。 输出格式要符合数学算式的要求,如有多种解答,需输出所有符合要求的表达式。(20分)
例如: 输入: 15, 6,12,4
      输出:  15-12+4-6=1
               15+4-12-6=1
               15+4-6-12=1
               15-6+4-12=1
               4+15-12-6=1
               4+15-6-12=1

回复列表 (共10个回复)

沙发

dim a(4),b(3)
for i= 1 to 4
    input a(i)
next i
for i= 1 to 4
    for j= 1 to 3-i
    swap a(i),a(j)
    for b(1)= 1 to 2
        for b(2)= 1 to 2
        for b(3)= 1 to 2
            sum=a(1)
            for n=1 to 3
            if b(n)=1 then sum =sum+a(n+1) else sum=sum-a(n+1)
            next n
            if sum>=0 then 
            print a(1);
            for k=1 to 3
                 if b(k)=1 then print "+";a(k+1); else print "-";a(k+1)
            next k
            print "=";sum
            end if
        next b(3)
          next b(2)
      next b(1)
           swap a(i),a(j)
      next j
next i
end
              

板凳

没试调过。。
因为我没装QB。。
VB里又SWAP不能用。。
所以有什么小问题楼主自己去解决吧

3 楼

第一题:
input x
print (x\2+1)*(x\2)+1+(x\2+1)*(x mod 2)

4 楼

第二题,利用组合来计算,只是有点特别的是:我用了字符串。

declare function nextzh$ (a$, b$)
  for i = 1 to 10
      a$ = chr$(i) + a$
  next
      b$ = right$(a$, 4)
do
  c$ = ""
  for i = 1 to 4
      c$ = c$ + string$(3, mid$(b$, i, 1))
  next
      d$ = right$(c$, 3)
  for i = 1 to 255
      s = 0
      for j = 1 to 3
          s = s + asc(mid$(d$, j, 1))
          if s = i then exit for
      next
      if j > 3 then
         i = i - 1
         d$ = nextzh$(c$, d$)
         if d$ = right$(c$, 3) then
            if i > m then
               m = i
               for i = 1 to len(b$)
                   print asc(mid$(b$, i, 1));
               next
               print ,m
            end if
            exit for
         end if
      end if
  next
  b$ = nextzh$(a$, b$)
loop until b$ = right$(a$, 4)

function nextzh$ (a$, b$)
for i = 1 to len(b$)
  if instr(1, a$, mid$(b$, i, 1)) > i then
     mid$(b$, 1, i) = mid$(a$, instr(1, a$, mid$(b$, i, 1)) - i, i)
     exit for
  end if
next
if i > len(b$) then b$ = right$(a$, len(b$))
nextzh$ = b$
end function

5 楼

最后一第我改用C++试了一下。。
发你们看看。。
#include<iostream.h>
void main()
{
 int a[4],b[4];
 int i,j,sum(0),temp;
 for (i=0;i<4;i++)
  cin >>a[i];
 for (i=0;i<4;i++)
  for (j=i;j<4;j++)
  {
   temp=a[i];
   a[i]=a[j];
   a[j]=temp;
   for (b[1]=1;b[1]<=2;b[1]++)
    for (b[2]=1;b[2]<=2;b[2]++)
     for (b[3]=1;b[3]<=2;b[3]++)
     {
      sum=a[0];
      for (int k=1;k<=3;k++)
       if (b[k]==1) 
        sum=sum+a[k]; 
       else 
        sum=sum-a[k];
      if (sum>=0)
      {
       cout <<a[0];
       for (k=1;k<=3;k++)
       if (b[k]==1) 
        cout <<'+'<<a[k]; 
       else 
        cout <<'-'<<a[k];
       cout <<'='<<sum<<endl;
      }
     }
   temp=a[i];
   a[i]=a[j];
   a[j]=temp;
  }
}

6 楼

可以用的。
只是如果有重复数字的话。。
要加一句判断。。
那句用的函数我不知道是什么。。(c++里)
所以。。。。

7 楼

[quote]第一题:
input&nbsp;x
print&nbsp;(x\2+1)*(x\2)+1+(x\2+1)*(x&nbsp;mod&nbsp;2)[/quote]

能输出真个图形吗

8 楼

第三题。10*10的方格

do
  cls
  for i=1 to 10
    for j=1 to 10
        color 1,7
        if x*y<>0 and(i=x or j=y or(i-x)=(j-y))or(i-x)=(y-j))then color 1,0
        print "[]";
    next
    print
  next
  color 7,0
  input "x,y"; x, y
loop until x*y=0

9 楼

第四题。

INPUT a$
FOR i = 1 TO LEN(a$) - 1
    FOR j = i + 1 TO LEN(a$)
        IF MID$(a$, i, 1) > MID$(a$, j, 1) THEN
           b$ = MID$(a$, i, 1)
           MID$(a$, i, 1) = MID$(a$, j, 1)
           MID$(a$, j, 1) = b$
        END IF
NEXT j, i
PRINT a$

10 楼

第五题不想做了,心情不好,这些东西在旧贴里多的是。

我来回复

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