主题:想不通啊,关于print tab 语句(请指教,我加分)
zzyzzyhong
[专家分:20] 发布于 2007-10-10 00:33:00
我是初学,请大家指教
上机做题,有一段程序
for n= 1 to 9
print tab (n*8);n;
next
好理解,1 到 9 各空8,16,24....个空格输出,都在同一行
我将分号去掉,改成
for n= 1 to 9
print tab (n*8);n
next
也好理解,1到9各空8,16,24....个空格输出,但都不在同一行,在1 到9 行
但我将分号该逗号
for n= 1 to 9
print tab (n*8);n,
next
奇怪了,列数是1到9,行数是1,2同行,3,4同行,5,6,7,8,9各一行,为什么?
为了验证,我随便输入
print tab (3);1,tab (14);2,tab (26);3
都不在一行
print tab (3);1,tab (9);2,tab (26);3
2,3 在 一行
print tab (3);1,tab (16);2,tab (26);3
1,2 在一行
搞不清啊,好象没什么规律。
请大家指教啊。
最后更新于:2007-10-14 23:38:00
回复列表 (共7个回复)
沙发
moz [专家分:37620] 发布于 2007-10-10 09:52:00
在tab( )设置位置 在 当前光标位置 的前面的时候,会自动换一行再定位.
假如当前光标在40 locate,40
如果tab(39) print tab(39);1; 会先换一行
假如当前光标在40 locate,40
如果tab(40) print tab(40);8; 不换行
板凳
蓝色的水晶 [专家分:90] 发布于 2007-10-12 11:17:00
我也是初学者,针对你提出的问题,我们共同探讨一下:
QBASIC程序屏幕一行可以输出80个字符,共分五个区,每区分别占14,14,14,14,24个字符,以这个为依据解答你提出的问题:
你的问题一:print tab (3);1,tab (14);2,tab (26);3 都不在一行
解释:print tab(3);1, 将会在屏幕上第一行的第3列输出 1,而1后面的逗号即下面的内容将在第二区即第15列输出。
而再接着的tab (14);2, 其中的14<15(14为第一区,15为第二区)故换行到第二行的第14列输出 2,而2后面的逗号即下面的内容将在第三区第29列输出。
而再接着的tab (26);3 其中的26<29(26是第二区,而29是第三区)故换行到第三行的第26列输出3。
综上,此输出语句应输出三行。
利用此种方法解释
问题二print tab (3);1,tab (9);2,tab (26);3应输出二行(2,3同行)。
问题三print tab (3);1,tab (16);2,tab (26);3 应输出二行(1,2同行)。
3 楼
Matodied [专家分:7560] 发布于 2007-10-13 12:54:00
关于你的第三个程序:
首先第9个格子输出1,接着到下一个分区(第15列)输出,而程序接下来要求在17列输出2,17>15,所以在原行输出,光标跳到29列(第三个分区的开始位置)。
然后,程序要求在25列输出3,25<29,所以换行后再输出3,但是要注意的是,换行后光标位置没变(还是29),4*8+1=33>29,4在同行后面输出。
5*8+1=41<43(第四个分区的开始位置),所以输出5时换行再输出(在41列),6*8+1=49<57,再换行,输出6。
由于光标已经在最后一个区,所以输出完6后往后跳的那个分区实际上是下一行的第一区,所以自动换行,这样使7、8、9各占一行。
跟踪程序:
要输出的数 光标位置 输出列(有一个符号位) 判断 处理
1 1 9 9 > 1 不换行
2 15 17 17 > 15 不换行
3 29 25 25 < 29 换行
4 29 33 33 > 29 不换行
5 43 41 41 < 43 换行
6 57 49 49 < 57 换行
7 下一行1(自动换行) 57 57 > 1 不换行
8 1(自动换行) 65 65 > 1 不换行
9 1(自动换行) 73 73 > 1 不换行
输出结果:
1 2
3 4
5
6
7
8
9
4 楼
zzyzzyhong [专家分:20] 发布于 2007-10-14 02:40:00
非常感谢各位,其实我自学BASIC,一本书还没看完,周围也没人交流,只有上网,靠网友指导了。书上有些地方说不大清楚,更不要说还有些错的地方。
比如,书上说输出时,一行5个区,每1区14列,14*5=70,又说一行可输出40或80个字符,我就纳闷了,呵呵。现在知道了,其实第5个区是24个空。
有时看半天的书也搞不清,网友几句话点拨一下,就通了。
所以说,学问学问,光埋头苦学,还是不行的,还要多问。
谢谢了!
5 楼
zzyzzyhong [专家分:20] 发布于 2007-10-14 23:37:00
请问
1:print 111111111111,2 (12个1)
和
2:print "1111111111111",2 (13 个1)
第1输出区不都是占13个字符么,
为什么第一句中,2 输出在30列
第2句中,2输出在第16列?
6 楼
moz [专家分:37620] 发布于 2007-10-15 13:45:00
print 数值
的时候,数值前面有一个符号位,如果是正数,那么就是一个空格
数值后面有一个空格的分隔符,以便于与后面的内容分开。
7 楼
zzyzzyhong [专家分:20] 发布于 2007-10-15 16:54:00
谢谢大家,有些东西书上说的不是很细,麻烦大家了。
我来回复