蓝桥杯基础知识1 字母大小写转换

蓝桥杯基础知识1 字母大小写转换

isalpha()判断一个字符是否为字母。

isalnum()判断一个字符是否为十进制数字字符或者字母,是否属于a~ z或A~ Z或0~9。

isdigit() 判断一个字符是否是十进制数字字符。十进制数字是:0 1 2 3 4 5 6 7 8 9

isalnum()和isdigit()中传递的数字如果不为0~9,则编译报错。

islower()判断一个字符是否为小写字母,是否属于a~z。

isupper()判断一个字符是否为大写字母,是否属于A~Z。

cpp 复制代码
#include <iostream>//输入输出
#include <ctype.h>//isalpha、isalnum、isdigit、islower、isupper
using namespace std;

int main() {

    cout << isalnum('a') << ' '<< isalnum('A') << ' '<< isalnum('1') << endl;
    cout << isalpha('b') << ' '<< isalpha('B') << ' '<< isalpha('2') <<endl;
    cout << isdigit('c') << ' '<< isdigit('#') << ' '<< isdigit('3') <<' '<< endl;
    cout << islower('d') << ' '<< islower('D') <<' '<< islower('4') << endl;
    cout << isupper('e') << ' '<< isupper('E') <<' '<< isupper('5') << endl;
	return 0;
}

C++ 在线工具 | 菜鸟工具 (runoob.com)

cpp 复制代码
//C++风格解法1,编写字母大小写转换函数
//使用库函数进行大小写转换,数字和特殊字符不变
#include<bits/stdc++.h>
using namespace std;

char convertedCh(char ch){
    if(islower(ch))ch = toupper(ch);
    else if(isupper(ch))ch = tolower(ch);    //改成else,数字和特殊字符也不变
    return ch;
}
int main(){
    string s;getline(cin,s);
    
    for(auto &i : s)i = convertedCh(i);
    cout << s << '\n';
    return 0;
}

tolower()把字母转换成小写字母,非字母字符不做出处理 。

toupper()把字母转换成大写字母,非字母字符不做出处理 。

for(auto i:v)遍历容器元素

for(auto x: range) 拷贝一份 range 元素,只会改变拷贝的元素,不会改变range中 的元素。

拷贝发生在编译期间,不会对运行速率造成很大影响。

for(auto& x: range)非常量左值引用,改变range中的元素。

当需要对原数据进行同步修改时,就需要添加&,即range的引用。

会在改变x的同时修改range。

for(const auto&x:range)常量左值引用,只读取,不拷贝也不改变range中的元素。

const (常类型),不能作为左值,& (引用),不拷贝,不申请新空间,修改range

不拷贝range(拷贝需要申请新的空间),同时不改变range

读取range,不拷贝不改变,一般用在只读操作。

cpp 复制代码
//C风格解法2,利用ASCII编码规则进行大小写转换,数字特殊字符不变
#include<bits/stdc++.h>
using namespace std;

char convertedCh(char ch){
    if('a' <= ch && ch <='z')ch = ch - 'a' + 'A';
    else if('A' <= ch && ch <= 'Z')ch = ch - 'A' + 'a';    //改成else,数字特殊字符也不变
    return ch;
}
int main(){
    string s;getline(cin,s);
    
    for(auto &i : s)i = convertedCh(i);
    cout << s << '\n';
    return 0;
}

getline(cin,s)就是读取一行,允许读取包含空格的字符串,s必须为字符串类型,即 string s。

cin.getline(s,100)允许读取包含空格的字符串,直到它读取至最大指定的字符数,或直到直到遇到换行符(Enter键),s必须为字符数组类型,即 char s[100]。

gets(s)允许读取包含空格的字符串,s必须为字符数组类型,即 char s[100];

gets() 用于从标准输入(通常是键盘)读取一个字符串,直到遇到换行符(Enter键),最终将读取到的字符串存储到指定的字符数组中,并在字符串的末尾添加'\0'

reference:

【C++常用函数】isalpha、isalnum、isdigit、islower、isupper用法_c++字符函数isalpha-CSDN博客C 库函数 -- isdigit() | 菜鸟教程 (runoob.com)

C++ tolower函数 与 toupper函数_c++tolower函数-CSDN博客

for(auto i : v)遍历容器元素_for auto 遍历-CSDN博客

auto、auto&、auto&&、const auto和const auto&的区别(常量和非常量的左右值引用)_auto &&和auto&的区别-CSDN博客

getline(cin,s)-CSDN博客

C++ getline函数用法详解 (biancheng.net)

C++ getline():从文件中读取一行字符串 (biancheng.net)

C++ cin.getline用法详解 (biancheng.net)

C语言gets():输入一个字符串 (biancheng.net)

相关推荐
2301_818419011 小时前
C++中的解释器模式变体
开发语言·c++·算法
爱学习的大牛1231 小时前
windows tcpview 类似功能 c++
c++
biter down2 小时前
C++11 统一列表初始化+std::initializer_list
开发语言·c++
ShineWinsu3 小时前
爬虫对抗:ZLibrary反爬机制实战分析技术文章大纲
c++
charlie1145141914 小时前
通用GUI编程技术——Win32 原生编程实战(十六)——Visual Studio 资源编辑器使用指南
开发语言·c++·ide·学习·gui·visual studio·win32
DpHard4 小时前
现代 C++ 中 push 接口为何提供 const T& 与 T&& 两个重载
c++
U-52184F695 小时前
深度解析:从 Qt 的 Q_D 宏说起,C++ 工业级 SDK 是如何保证 ABI 稳定性的
数据库·c++·qt
迈巴赫车主5 小时前
蓝桥杯20560逃离高塔
java·开发语言·数据结构·算法·职场和发展·蓝桥杯
hz_zhangrl6 小时前
CCF-GESP 等级考试 2026年3月认证C++三级真题解析
c++·算法·程序设计·gesp·gesp2026年3月·gesp c++三级
酉鬼女又兒7 小时前
零基础快速入门前端DOM 操作核心知识与实战解析(完整汇总版)(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·javascript·职场和发展·蓝桥杯·js