C 语言编程 5.10 从键盘任意输入一个字符,编程判断该字符,大写字母,小写字母,空格,还是其他字符

本文介绍了两种使用C语言判断字符类型的方法。方法一采用if-else结构进行条件判断,并分别输出字符的大写、小写、空格或其他类型。方法二是方法一的改进版,通过switch-case结构简化了代码并增强了可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一:

#include <stdio.h>
void main()
{
    char ch;
    ch=getchar();
    if(ch >= 'A' && ch <= 'Z' )
    {
        printf("为大写字符\n");
    }
    else if(ch >= 'a' && ch <= 'z' )
    {
        printf("为小写字符\n");
    }
    else if(ch==' ')
    {
        printf("为空格字符\n");
    }
    else 
    {
        printf("为其他字符\n");
    }

}

方法二:

#include <stdio.h>
void main()
{
    char ch;
    int a;
    ch = getchar();
    if (ch >= 'a' && ch <= 'z')
    ch = '1';
    if (ch >= 'A' && ch <= 'Z')
    ch = '2';
    if( ch == ' ')
        ch = '3';
    switch(ch)
    {
    
    case '1' : printf("xiao \n");break;

    case '2' : printf("da  \n");break;

    case '3' : printf("空格 \n");break;

    default: printf("qita");
    
    }

}

总结:

方法二为方法一的扩展,其实直接加个printf函数即可

注意:在给 ch 赋值时注意要与witch(ch)中的ch对应。(上面赋值加单引号下面就加单,不加则都不加)判断会判断错误。

<think>我们参考引用来回答用户的问题。用户想判断QString的最后一个字符是否为'-'根据引用[3]我们知道QString有比较操作符,但我们这里需要获取最后一个字符进行比较。我们可以使用QString的成员函数来获取最后一个字符,例如使用at()或[]运算符,或者使用back()(Qt5.10及以上推荐)。但注意:根据引用[2],QString的replace函数返回一个新的字符串,而不修改原字符串,这说明QString是immutable的(不可变),所以我们可以安全地使用索引访问。方法1:使用索引QStringstr=...;if(!str.isEmpty()&&str[str.length()-1]=='-'){//最后一个字符是'-'}方法2:使用endsWith()函数(更简单直接)if(str.endsWith('-')){//以'-'结尾,当然也包括最后一个字符是'-'的情况}方法3:使用right()函数获取最右边一个字符,然后比较if(!str.isEmpty()&&str.right(1)=="-"){//最后一个字符是'-'}方法4:使用back()函数(需要确保字符串非空)if(!str.isEmpty()&&str.back()=='-'){//最后一个字符是'-'}注意:使用back()和[]运算符或at()访问时,如果字符串为空会导致未定义行为,所以要先检查是否为空。考虑到安全性和代码简洁性,推荐使用endsWith(),因为它内部已经处理了空字符串的情况(空字符串不会以'-'结尾,所以返回false)并且代码更清晰。因此,我们可以这样写:if(str.endsWith('-')){//是}如果用户确实只需要检查最后一个字符(而不是后缀),那么使用endsWith('-')是完全正确的,因为它可以检查字符串是否以该字符结尾。所以,我们给出以下代码示例:</think> ### 判断 QString 的最后一个字符是否为 '-' 在 Qt/C++ 中检查 QString 的最后一个字符是否为连字符 `'-'`,可以通过以下方法实现: #### 推荐方法:使用 `endsWith()` 函数 🌟 ```cpp QString str = "text-"; if (str.endsWith('-')) { qDebug() << "最后一个字符是 -"; } else { qDebug() << "最后一个字符不是 -"; } ``` **原理** `endsWith()` 直接检查字符串结尾字符,效率高且代码简洁,且已处理空字符串情形(返回 false)。 #### 备选方法:索引访问检查 ```cpp if (!str.isEmpty() && str[str.length()-1] == '-') { // 最后一个字符是 - } ``` **注意** 需显式检查空字符串防止越界错误(`str.length()-1` 在空字符串时 = -1)。 #### 完整示例代码 ```cpp #include <QString> #include <QDebug> int main() { QString test1 = "hello-"; QString test2 = "world"; // 方法1: endsWith() qDebug() << "测试1:" << test1.endsWith('-'); // true qDebug() << "测试2:" << test2.endsWith('-'); // false // 方法2: 索引访问 if (!test1.isEmpty() && test1[test1.length()-1] == '-') { qDebug() << "测试1 最后一个字符是 -"; // 执行 } return 0; } ``` --- ### 相关问题 1. **如何安全地删除 QString 的最后一个字符?** ```cpp if (!str.isEmpty()) str.chop(1); ``` 2. **如何检查 QString 是否以特定子串结尾(比如 ".txt")?** ```cpp if (str.endsWith(".txt")) { ... } ``` 3. **QString 和 std::string 在字符操作上有哪些核心差异?** 主要涉及编码处理(QString 用 UTF-16,std::string 依赖本地编码)和 API 设计差异[^1][^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值