C语言_C++实现大小写字母相互转化(超详细,一看就懂)

ASCLL 方法

“在C语言中,小写字母转换为大写字母的方法是将小写字母的ASCII码值减去32(例:A=a-32);大写字母转换为小写字母的的方法是将大写字母的ASCII码值加上32(例:a=A+32)即可。”
以下是使用ASCII码实现英文字母大小写转换的C++代码:

#include <iostream>

using namespace std;

int main() {
    char ch;
    cout << "请输入一个英文字母:";
    cin >> ch;

    if (ch >= 'A' && ch <= 'Z') { // 如果输入的是大写字母
        ch = ch + 32; // 将ASCII码值加上32,转换为小写字母并输出
        cout << "转换后的字母为:" << ch << endl;
    } else if (ch >= 'a' && ch <= 'z') { // 如果输入的是小写字母
        ch = ch - 32; // 将ASCII码值减去32,转换为大写字母并输出
        cout << "转换后的字母为:" << ch << endl;
    } else {
        cout << "输入的不是英文字母。" << endl;
    }

    return 0;
}

算法讲解:

  1. 首先,我们使用cin从标准输入中读取一个字符ch
  2. 然后,我们使用ASCII码来判断该字符是否为大写字母或小写字母。大写字母的ASCII码范围是65-90,小写字母的ASCII码范围是97-122。如果输入的字符在大写字母的ASCII码范围内,则将其加上32,将大写字母转换为小写字母;如果输入的字符在小写字母的ASCII码范围内,则将其减去32,将小写字母转换为大写字母。如果输入的字符既不是大写字母也不是小写字母,则输出“输入的不是英文字母”。
  3. 最后,我们将转换后的字符输出到标准输出。

该算法的原理基于ASCII码的特性。ASCII码是一种用于计算机中表示字符的编码方式,每个字符都有一个对应的数字码。大写字母A-Z的ASCII码范围是65-90,小写字母a-z的ASCII码范围是97-122。通过比较输入字符的ASCII码值,我们可以判断它是否为大写字母或小写字母。
如果输入的字符是大写字母,我们将其ASCII码值加上32,这样就可以得到对应的小写字母的ASCII码值。例如,大写字母A的ASCII码值为65,加上32后得到97,即小写字母a的ASCII码值。
如果输入的字符是小写字母,我们将其ASCII码值减去32,这样就可以得到对应的大写字母的ASCII码值。例如,小写字母a的ASCII码值为97,减去32后得到65,即大写字母A的ASCII码值。
通过这种加减操作,我们可以实现英文字母的大小写转换。注意,在转换过程中,我们直接对字符的ASCII码值进行操作,因此需要注意字符的数据类型和取值范围。同时,还要注意输出时将转换后的字符类型转换为对应的类型,以便正确显示结果。

还有一种方法

#include <iostream>  
#include <cctype> // 包含字符处理函数isupper和islower  
  
using namespace std;  
  
int main() {  
    char ch;  
    cout << "请输入一个英文字母:";  
    cin >> ch;  
  
    if (isupper(ch)) { // 如果输入的是大写字母  
        ch = tolower(ch); // 转换为小写字母并输出  
        cout << "转换后的字母为:" << ch << endl;  
    } else if (islower(ch)) { // 如果输入的是小写字母  
        ch = toupper(ch); // 转换为大写字母并输出  
        cout << "转换后的字母为:" << ch << endl;  
    } else {  
        cout << "输入的不是英文字母。" << endl;  
    }  
  
    return 0;  
}

这是利用了 c++库函数

算法讲解:

  1. 首先,我们使用cin从标准输入中读取一个字符ch。
  2. 然后,我们使用isupper函数判断该字符是否为大写字母。如果是,则使用tolower函数将其转换为小写字母并输出;如果不是,则使用islower函数判断该字符是否为小写字母。如果是,则使用toupper函数将其转换为大写字母并输出;如果不是,则输出“输入的不是英文字母”。
  3. 在上述过程中,我们使用了C++标准库中的字符处理函数isupper、islower、tolower和toupper。这些函数可以方便地判断字符是否为大写字母、小写字母,以及将字符转换为大写或小写形式。

练习题

输入一段英文字符串(可以包含空格),字符串中的大写字母变成小写字母,小写字母变成大写字,然后输出,如果有非字母字符则不变化

方法一

以下是使用ASCII码方法实现英文字母大小写转换的C++代码:

#include <iostream>
#include <string>

using namespace std;

int main() {
    string str;
    cout << "请输入一段英文字符串:";
    getline(cin, str); // 读取整行字符串

    for (char& c : str) { // 遍历字符串中的每个字符
        if (isalpha(c)) { // 判断是否为字母字符
            if (c >= 'A' && c <= 'Z') { // 判断是否为大写字母
                c = c + 32; // 转换为小写字母
            } else if (c >= 'a' && c <= 'z') { // 判断是否为小写字母
                c = c - 32; // 转换为大写字母
            }
        }
    }

    cout << "转换后的字符串为:" << str << endl;
    return 0;
}

代码解释:

  1. 我们使用了string类型来存储输入的字符串,并使用getline函数读取整行字符串。这样可以处理包含空格的情况。
  2. 使用for循环遍历字符串中的每个字符。通过isalpha函数判断字符是否为字母字符。如果是字母字符,则使用ASCII码判断是大写字母还是小写字母,并使用加减操作进行转换。注意,由于字符在内存中是以ASCII码形式存储的,因此可以直接进行加减操作。
  3. 最后,输出转换后的字符串。注意,由于我们使用了引用修改了字符串中的字符,所以不需要重新分配内存或复制字符串。

方法二

#include <iostream>
#include <string>
#include <cctype>

using namespace std;

int main() {
    string str;
    cout << "请输入一段英文字符串:";
    getline(cin, str); // 读取整行字符串

    for (char& c : str) { // 遍历字符串中的每个字符
        if (isalpha(c)) { // 判断是否为字母字符
            if (isupper(c)) { // 判断是否为大写字母
                c = tolower(c); // 转换为小写字母
            } else if (islower(c)) { // 判断是否为小写字母
                c = toupper(c); // 转换为大写字母
            }
        }
    }

    cout << "转换后的字符串为:" << str << endl;
    return 0;
}

代码解释:

  1. 我们使用了string类型来存储输入的字符串,并使用getline函数读取整行字符串。这样可以处理包含空格的情况。
  2. 使用for循环遍历字符串中的每个字符。通过isalpha函数判断字符是否为字母字符。如果是字母字符,则使用isupperislower函数判断是大写字母还是小写字母,并使用tolowertoupper函数进行转换。
  3. 最后,输出转换后的字符串。注意,由于我们使用了引用修改了字符串中的字符,所以不需要重新分配内存或复制字符串。
  • 39
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

01红C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值