蓝桥杯基础知识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。
#include //输入输出
#include //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') <
C++ 在线工具 | 菜鸟工具 (runoob.com)
//C++风格解法1,编写字母大小写转换函数
//使用库函数进行大小写转换,数字和特殊字符不变
#include
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,不拷贝不改变,一般用在只读操作。
//C风格解法2,利用ASCII编码规则进行大小写转换,数字特殊字符不变
#include
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)