C++——判断字符类型

今天一道判断字符类型的题结果出错,检查发现是表达式的错误使用
0<=x<=9 等价于 (0<=x) <= 9
(0<=x)是比较,结果是真(一般为1)或0, 无论是1还是0 都<=9, 所以这个表达式的结果为真。
而0<=x && x <= 9等价于(0<=x) && (x <=9) x 在[0,9]范围内,表达式为真(1),否则为0。
题目内容:

编写程序,输入一个字符,判断其是数字、大写字母、小写字母还是其他,分别显示0,1,2或-1。

输入:一个ASCII字符

输出:数字-1,0,1或2

样例1输入:

3

样例1输出:

0

样例2输入:

样例2输出:

-1

样例3输入:

A

样例3输出:

1

时间限制:500ms内存限制:32000kb

思路:0的ASCII码值为48,A的ASCII码值为65,a的ASCII码值为97,可以直接比较字符,也可以数值比较

#include <iostream>
using namespace std;
int main()
{ char c;
cin>>c;
if('0'<=c&&c<='9')
{cout<<"0";
}
else if('A'<=c&&c<='Z')
{
        cout<<"1"<<endl;
}
else if('a'<=c&&c<='z')
{
        cout<<"2"<<endl;
}
    else cout<<"-1";
return 0;
}

### C++判断字符串是否相等的方法 在 C++ 编程语言中,存在多种方法用来判断两个字符串是否相等。这些方法主要取决于所使用的字符串类型——C 风格字符串(`char[]` 或 `const char*`)还是现代的 `std::string` 类型。 #### 方法一:使用 `strcmp()` 函数 对于 C 风格字符串(即以 `\0` 结尾的字符数组),可以使用标准库中的 `strcmp()` 函数来进行比较[^2]。该函数返回值为零时表示两个字符串完全相同;否则表示两者不同。 ```cpp #include <iostream> #include <cstring> // 包含 strcmp 声明头文件 using namespace std; int main(){ char str1[10]="hello"; char str2[10]="world"; if(strcmp(str1,str2)==0){ cout << "Strings are equal." << endl; } else{ cout << "Strings are not equal." << endl; } return 0; } ``` #### 方法二:运用运算符重载 (`==`) 当采用 STL 提供的标准模板库容器 `std::string` 来存储数据时,则可以直接借助于内置的操作符重载功能—双等于号(`==`)来执行判定工作[^2]。这种方式更加直观简洁,并且能够自动处理大小写敏感性问题。 ```cpp #include <iostream> #include <string> // 引入 string 定义所在的命名空间 using namespace std; int main(){ string s1 = "example"; string s2 = "Example"; if(s1 == s2){ cout << "Strings match exactly including case sensitivity."<<endl; } else{ cout << "There exists difference between two strings considering cases as well."<<endl; } return 0; } ``` 值得注意的是,默认情况下这种形式会区分字母的大写字母与小写字母之间的差异。如果忽略这种情况区别的话,就需要先转换成统一的形式再做对比测试了。 #### 方法三:调用成员函数 `.compare()` 除了上面提到过的简单语法之外,还有另外一种更为灵活的选择就是利用对象自身的公共接口之一 — compare 成员函数[^2] 。它不仅可以告知我们目标串之间是否存在任何差别,而且还能进一步指出它们彼此间具体的相对顺序关系(小于、大于或者恰好一致)。同样地,这里也遵循 ASCII 表编码规则下的字典序排列原则。 ```cpp #include <iostream> #include <string> using namespace std; int main(){ string firstStr = "abcde"; string secondStr = "ABCDE"; int result = firstStr.compare(secondStr); switch(result){ case 0 : cout<<"Both Strings Are Identical"<<endl; break; default: cout<<"Given Two Strings Differ From Each Other In Some Way Or Another "<<abs(result)<< " Position(s)"<<endl; } return 0; } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值