蓝桥杯基础知识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 s100。

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

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)

相关推荐
青瓦梦滋5 小时前
WebSocket协议
linux·服务器·网络·c++·websocket·网络协议·http
CodeYp201910 小时前
第15讲:二叉搜索树
开发语言·c++·二叉搜索树
pipixia2003311 小时前
C++继承面试四连问:内存叠加、私有继承、sizeof、权限重映射
c++·面试·嵌入式·继承·面向对象·对象模型
牵猫散步的鱼儿14 小时前
C++ 内存分区
c++
choumin14 小时前
C++ 标准容器为什么不能存引用
c++·容器·引用类型
谙弆悕博士14 小时前
用 C 写了个 Windows 聊天室,踩了几个多线程和控制台的坑
c语言·开发语言·c++·windows·网络编程·聊天室
stolentime15 小时前
CF2277E Tree Guessing题解
c++·算法·贪心算法·交互·ad-hoc
syagain_zsx16 小时前
ODB 与 MySQL:C++ 里的 ORM 实践(类即表、事务铁律与查询封装)
开发语言·数据库·c++·mysql·工具库·1024程序员节
小鱼仙官16 小时前
使用Qt封装C/C++ 动态库 用于第三方调用
c语言·c++·qt
晚风予卿云月16 小时前
【C++高并发内存池】 1.定长内存池的实现
开发语言·c++·内存管理