回 帖 发 新 帖 刷新版面

主题:关于FOR循环的一个小程序???

要求输出如下效果:  
                5
               444
              33333
             2222222
            111111111
   我的想法是这样的:
   for i=1 to 5
       print tab(6-i)
     for j=1 to 2*i-1
       print 6-i;
     next
    print
   next
end
可是输出时,数是对的,可是对齐效果不对,请问各位高手,这个程序还应该如何修改呢??谢谢!!

回复列表 (共10个回复)

沙发

将 数字 转换为字符串,再删去前导空格 或 直接用ASC码表示数

CLS
FOR i = 1 TO 5
  PRINT TAB(6 - i);
  FOR j = 1 TO 2 * i - 1
    PRINT LTRIM$(STR$(6 - i));      '也可以是PRINT CHR$(6 - i + 48);
  NEXT j
PRINT
NEXT i
END

板凳

谢谢你!飞鸟12 :)

3 楼

和我的方法一样,糟了!没有表现的机会了

4 楼

晕这个也要字符串形式,用数值的多简单啊
FOR a=5 to 1
print tab(10+a);
for b=1 to 11-2*a
print "a";
next b
print
next a
end

5 楼

楼上的,我认为程序的正确性是最重要的,
你的程序运行后什么也没显示,拜托发程序之前先运行一下。

6 楼

程序的正确性固然重要,但是在实际中往往要讲简便性和效绿性。

7 楼

如果程序都不能正常运行,那“简便性和效率性”还有什么意义?

8 楼

楼上二位说得都很正确
CLS
FOR i = 1 TO 5
PRINT SPC(5 - i); STRING$(i * 2 - 1, CHR$(54 - i))
NEXT

那这个差不多就兼顾了吧。

另外,我纳闷为什么有那么多人放着string$函数不用

9 楼

不好意思,看题目的时候没看清楚
for a=1 to 5
print tab(6-a);
for b=1 to 2*a-1
print chr$(54-a);
next b
print
next a
end

10 楼

谢谢诸位!!![em11][em3]

我来回复

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