如何在Commodore 64上将小写字符串转换为大写字符串并使首字母大写?

3
我在Commodore 64模拟器上输入了“hello world”。 我需要使其打印出以下结果: hello world HELLO WORLD Hello World
如何只使用一个打印语句来实现?

添加你所编写的BASIC命令。 - alvalongo
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 $的子例程。


0

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

这里有一个快速示例(必须截屏展示)- 当你打开一个字符串时,按下CRTLN - 会显示一个反向的N字符,这是从CBM图形字符和CBM商业模式字符切换。按下CTRLH,在字符串中添加一个反向的H,这是为了禁用SHIFT+C=键,防止手动在这两种字符模式之间切换。如果你想要一个简单切换商业模式图形模式的方法,请省略这个。

据我所知,在这里描述的方式中,没有简单的控制字符可以在打开的字符串中切换回商业模式到图形模式。要切换回图形模式,使用:

print chr$(142)

这也可以被添加到一个字符串中,例如:

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

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

来源:PETSCII - C64-Wiki

PRINTing a string with control characters - image 1

The results when running the program exapmle - image 2


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接