从键盘输入不大于 80 个字符的宇待串,对宇符其中的大写字母转换为小写
时间: 2024-02-09 21:09:02 浏览: 30
好的,我可以帮你解决这个问题。以下是 C++ 代码实现:
```c++
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
string input;
getline(cin, input); // 从键盘输入字符串
transform(input.begin(), input.end(), input.begin(), ::tolower); // 将字符串中的大写字母转换为小写字母
cout << input << endl; // 输出转换后的字符串
return 0;
}
```
这段代码中,我们先使用 `getline` 函数从键盘读入字符串,并将其存储在 `input` 变量中。然后,使用 `transform` 函数将字符串中的大写字母转换为小写字母。最后,使用 `cout` 将转换后的字符串输出到屏幕上。
需要注意的是,这里使用了 `::tolower` 函数,而不是 `std::tolower` 函数。这是因为我们使用了命名空间 `std`,而 `::tolower` 函数是全局函数,可以在任何命名空间中使用。
相关问题
1、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
这是一个x86 16位汇编语言的实现:
```
ORG 100h ;程序入口地址
START:
mov ah, 01h ;等待键盘输入
int 21h ;调用21h中断
cmp al, 61h ;检查输入是否为小写字母a
jl SKIP ;如果不是小写字母a,跳过
cmp al, 7Ah ;检查输入是否为小写字母z
jg SKIP ;如果不是小写字母z,跳过
sub al, 20h ;将小写字母转换为大写字母
SKIP:
mov ah, 02h ;显示字符
int 21h ;调用21h中断
jmp START ;循环执行
END START ;程序结束
```
注释:
- `ORG 100h`:设置程序入口地址为100h
- `START`:程序开始标签
- `mov ah, 01h`:将01h存储在ah寄存器中,等待键盘输入
- `int 21h`:调用21h中断,等待键盘输入
- `cmp al, 61h`:将al寄存器中的值与61h(小写字母a的ASCII码)进行比较
- `jl SKIP`:如果al中的值小于61h,跳过SKIP标签
- `cmp al, 7Ah`:将al寄存器中的值与7Ah(小写字母z的ASCII码)进行比较
- `jg SKIP`:如果al中的值大于7Ah,跳过SKIP标签
- `sub al, 20h`:将al寄存器中的值减去20h(大小写字母之间的ASCII码差值),将小写字母转换为大写字母
- `SKIP`:跳过标签,如果输入不是小写字母,则直接执行该标签下的指令
- `mov ah, 02h`:将02h存储在ah寄存器中,显示字符
- `int 21h`:调用21h中断,显示字符
- `jmp START`:跳转到START标签继续循环执行
- `END START`:程序结束标签
注意:这个程序只适用于x86 16位汇编语言,并且需要在DOS环境下运行。如果在其他环境下运行,可能需要进行修改。
汇编将通过键盘连续输入的小写字母转换成大写字母。(注意:输入非小写字母时显示出错信息)
以下是汇编程序:
```
.model small
.stack 100h
.data
input_msg db "Enter a lowercase letter: $"
output_msg db "The uppercase letter is: $"
error_msg db "Error: Please enter a lowercase letter!$"
letter db ?
.code
main proc
mov ax, @data
mov ds, ax
mov ah, 9 ; 显示输入提示信息
lea dx, input_msg
int 21h
mov ah, 1 ; 读取键盘输入
int 21h
mov bl, al ; 保存输入的字符
cmp bl, 'a' ; 判断是否小写字母
jl error ; 不是小写字母,跳转到错误处理
cmp bl, 'z'
jg error
sub bl, 32 ; 将小写字母转换成大写字母
mov ah, 9 ; 显示输出信息
lea dx, output_msg
int 21h
mov dl, bl ; 输出转换后的字符
mov ah, 2
int 21h
jmp exit ; 跳转到程序结束
error:
mov ah, 9 ; 显示错误信息
lea dx, error_msg
int 21h
exit:
mov ah, 4ch ; 程序结束
int 21h
main endp
end
```
程序的思路如下:
1. 显示输入提示信息。
2. 读取键盘输入,保存输入的字符。
3. 判断输入的字符是否小写字母,如果不是,跳转到错误处理。
4. 将小写字母转换成大写字母。
5. 显示输出信息,输出转换后的字符。
6. 程序结束。
程序中使用了 int 21h 中断来显示信息、读取键盘输入和输出字符。其中,ah 寄存器的值为 9 时表示显示字符串,为 1 时表示读取键盘输入,为 2 时表示输出字符。另外,cmp 指令用于比较两个值的大小,jl 和 jg 分别表示小于和大于的跳转指令。