编写程写并上机验证:从键盘上输入一个字符,如果是小写字母,请转换化为大写字母;如果是大写字母,请转换化为写小字母;如果是其他字母请原样输出。
时间: 2023-04-10 15:03:30 浏览: 62
以下是 Lua 代码:
```lua
function convertCase(char)
if char >= 'a' and char <= 'z' then
return string.upper(char)
elseif char >= 'A' and char <= 'Z' then
return string.lower(char)
else
return char
end
end
io.write("请输入一个字符:")
local char = io.read(1)
print("转换后的字符为:" .. convertCase(char))
```
这段代码会从键盘上读取一个字符,然后根据字符的大小写进行转换,最后输出转换后的字符。如果输入的字符不是字母,则直接输出原字符。
相关问题
编程序并上机调试运行。 (1)输入一行字符,分别统计出其中的英文大写字母、小写字母、空格、数字和其他字符的个数。
好的,这是一个简单的字符统计程序,可以用C语言实现:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char c;
int upper = 0, lower = 0, space = 0, digit = 0, other = 0;
printf("请输入一行字符:\n");
while ((c = getchar()) != '\n') {
if (isupper(c))
upper++;
else if (islower(c))
lower++;
else if (isspace(c))
space++;
else if (isdigit(c))
digit++;
else
other++;
}
printf("大写字母:%d\n", upper);
printf("小写字母:%d\n", lower);
printf("空格:%d\n", space);
printf("数字:%d\n", digit);
printf("其他字符:%d\n", other);
return 0;
}
```
程序通过循环读入每个字符,并使用 `isupper()`、`islower()`、`isspace()` 和 `isdigit()` 等库函数判断字符的类型,最后输出结果。
汇编编写完整上机程序,实现如下功能: (1)段内子程序:实现从键盘输入10个字母并将其ASCII码存入到字节数组STRING中。(7分) (2)段间子程序:将STRING中的小写字母都转化成大写字母,并将STRING内容显示输出。(8分)
下面是一个实现题目要求的完整上机程序:
```
TITLE Convert String to Upper Case
.MODEL SMALL
.STACK 100H
.DATA
STRING DB 10 DUP (?) ; 存放输入的字符 ASCII 码
MSG1 DB 'Please enter 10 letters:', 0DH, 0AH, '$'
MSG2 DB 'The converted string is:', 0DH, 0AH, '$'
.CODE
MAIN PROC
MOV AX, @DATA ; 初始化数据段寄存器
MOV DS, AX
MOV AH, 09H ; 显示提示信息
LEA DX, MSG1
INT 21H
CALL READ_STRING ; 调用输入字符串的子程序
CALL CONVERT_STRING ; 调用转换字符串的子程序
MOV AH, 09H ; 显示转换后的字符串
LEA DX, MSG2
INT 21H
MOV AH, 09H
LEA DX, STRING
INT 21H
MOV AH, 4CH ; 退出程序
INT 21H
MAIN ENDP
READ_STRING PROC
MOV CX, 10 ; 循环读取10个字符
LEA SI, STRING ; 将 STRING 的偏移地址存放到 SI 寄存器中
READ_LOOP:
MOV AH, 01H ; 从键盘读取一个字符
INT 21H
MOV [SI], AL ; 将读取的字符存放到字符串中
INC SI ; 将指针指向下一个位置
LOOP READ_LOOP ; 继续读取下一个字符
RET
READ_STRING ENDP
CONVERT_STRING PROC
LEA SI, STRING ; 将 STRING 的偏移地址存放到 SI 寄存器中
MOV CX, 10 ; 循环处理10个字符
CONVERT_LOOP:
MOV AL, [SI] ; 将当前字符的 ASCII 码移动到 AL 寄存器中
CMP AL, 61H ; 判断是否为小写字母
JB SKIP ; 如果不是小写字母,则跳过
CMP AL, 7AH ; 判断是否为小写字母
JA SKIP ; 如果不是小写字母,则跳过
SUB AL, 20H ; 将小写字母转换为大写字母
MOV [SI], AL ; 将转换后的字符存放回字符串中
SKIP:
INC SI ; 将指针指向下一个字符
LOOP CONVERT_LOOP ; 继续处理下一个字符
RET
CONVERT_STRING ENDP
END MAIN
```
上面的程序实现了从键盘输入10个字符,并将其 ASCII 码存放到 STRING 数组中的 READ_STRING 子程序,以及将字符串中的小写字母转换为大写字母,并将转换后的字符串显示输出的 CONVERT_STRING 子程序。在主程序中,先调用 READ_STRING 子程序获取用户输入的字符串,然后调用 CONVERT_STRING 子程序将小写字母转换为大写字母,并将转换后的字符串输出。