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

相关推荐
云知谷9 分钟前
【经典书籍】《代码整洁之道》第六章“对象与数据结构”精华讲解
c语言·开发语言·c++·软件工程·团队开发
仰泳的熊猫1 小时前
1013 Battle Over Cities
数据结构·c++·算法·pat考试
渡我白衣2 小时前
字符串的陷阱与艺术——std::string全解析
网络·c++·人工智能·自然语言处理·智能路由器·信息与通信·caffe
吃不饱的得可可2 小时前
C++17常用新特性
开发语言·c++
_OP_CHEN2 小时前
算法基础篇:(七)基础算法之二分算法 —— 从 “猜数字” 到 “解难题” 的高效思维
c++·算法·蓝桥杯·二分查找·acm·二分答案·二分算法
一匹电信狗2 小时前
【C++11】Lambda表达式+新的类功能
服务器·c++·算法·leetcode·小程序·stl·visual studio
煤球王子2 小时前
学而时习之:C++中的枚举
c++
楼田莉子2 小时前
C++/Linux小项目:自主shell命令解释器
linux·服务器·开发语言·c++·后端·学习
草莓火锅3 小时前
用c++求第n个质数
开发语言·c++·算法
GISer_Jing4 小时前
OSG多视口与多通道渲染核心技术解析
c++·3d·新浪微博