3

我在 Commodore 64 模拟器上输入了“hello world”。我必须将其打印为 hello world HELLO WORLD Hello World

我怎样才能只使用一个打印语句来做到这一点?

4

2 回答 2

3

这是一个答案,下面有解释

10 a$="hello world" : rem your string goes here
20 c$=a$:gosub100:d$=a$:gosub200:printc$;" ";a$;" ";d$ : rem the one print
30 end
100 a0$=a$:a$="" :a2$=" ":rem in capital-case subroutine
110 for i=1tolen(a0$):a1$=mid$(a0$,i,1):ifa2$=" "thena1$=chr$(asc(a1$)or128)
120 a2$=a1$:a$=a$+a1$:next:return
200 a0$=a$:a$="": rem all in uppercase subroutine
210 for i=1tolen(a0$):a1$=mid$(a0$,i,1):a$=a$+chr$(asc(a1$)or128):next:return

它符合您只有一个打印语句的规则。它的工作原理是复制所有小写字符串,然后转换为首字母大小写并复制该字符串,最后将其余部分转换为大写,然后在单张打印中以正确的顺序使用副本陈述。

PETSCII 中的大写非常简单,因为您只需在每个字符上设置高位 (128) 即可。但是,由于 BASIC 2.0 还没有这方面的功能,因此需要对 a$ 进行操作的子例程。

于 2019-12-25T06:38:11.127 回答
0

您可以在字符串和打印语句中使用控制字符。其中一些记录在 C64 BASIC 手册和程序员参考指南中(即,反向字符,以及使用CTRLandC=键的颜色字符代码)

这是一个简单的例子(必须屏幕截图才能显示) - 当您打开一个字符串时,按CRTL-N它将显示一个反转的 N 字符,这是从 CBM 图形字符和 CBM 商业模式字符切换的。按CTRLandH将在字符串中添加一个反转H,这是禁用SHIFT+C=键以阻止您在这两种字符模式之间手动切换。如果您想在Business ModeGraphics Mode之间轻松切换,请忽略这一点。

据我所知,没有简单的控制字符可以从商业模式切换到图形模式,您可以在此处描述的开放字符串中使用它。要切换回图形模式,请使用:

print chr$(142)

这也可以添加到字符串中,即

let a$ = chr$(142) + "hello world"

您也不需要LETCommodore BASIC 中的语句。我在这里仅用于说明目的。

资料来源:PETSCII - C64-Wiki

打印带有控制字符的字符串 - 图 1

运行程序示例时的结果 - 图 2

于 2021-10-21T11:12:10.003 回答