关于#c++#的问题,请各位专家解答!这个为什么显示错误啊,我设计了一个输入一串字符遇到@就停止,且只读取字母,大写变小写小写变大写

img

img


关于#c++#的问题,请各位专家解答!这个为什么显示错误啊,我设计了一个输入一串字符遇到@就停止,且只读取字母,大写变小写小写变大写https://img-mid.csdnimg.cn/release/static/image/mid/ask/291588938396115.jpg "#left")

img

【以下回答由 GPT 生成】

代码中可能出现问题的地方是将大写字母转换为小写字母和将小写字母转换为大写字母的处理逻辑,导致最后的转换结果并不正确。

以下是修改后的代码:

#include <iostream>
#include <string>
using namespace std;

int main() {
    string input;
    char c;
    cout << "请输入字符序列(遇到@符号停止): ";
    getline(cin, input);
    for (int i = 0; i < input.length(); i++) {
        c = input[i];
        if (c == '@') {
            break;
        }
        if (isalpha(c)) {
            if (isupper(c)) {
                c = tolower(c);
            } else {
                c = toupper(c);
            }
            cout << c;
        }
    }
    return 0;
}

这里对字符的转换操作不直接输出到控制台上,而是先将转换后的字符保存到变量c中,最后再统一输出。这样可以确保转换后的字符都按照顺序输出。

请再次运行代码并测试,看是否能够正确输出转换后的结果。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

因为打印没有放到两个else if语句里面,所以当是字母或其他非数字字符时都会打印,所以将打印放到两个else if语句里面;

然后第一个if判断也可以去除。

修改如下:

参考链接:


C 库函数 – islower() | 菜鸟教程 C 库函数 - islower() C 标准库 - <ctype.h> 描述 C 库函数 int islower(int c) 检查所传的字符是否是小写字母。 声明 下面是 islower() 函数的声明。 int islower(int c); 参数 c -- 这是要检查的字符。 返回值 如果 c 是一个小写字母,则该函数返回非零值(true),否则返回 0(false)。 实例 下面的实例.. https://www.runoob.com/cprogramming/c-function-islower.html


#include <iostream>

using namespace std;

int main(void){
    
    char input='1';
    cout<<"enter the character:";

    // https://blog.csdn.net/qq_41682681/article/details/80813747
    cin.get(input);
    //    cout<<"input="<<input<<endl;    
        
    while(input!='@'){
        

        
//        if(isdigit(input)){  // 这个判断可以去除 
//            cin.get(input);
//            continue;
//        // https://www.runoob.com/cprogramming/c-function-islower.html
//        }else 
        
        if(islower(input)){    // 如果是小写字母则转为大写字母或输出
            input=toupper(input);
        //    cout<<"2,";
            cout<<input;
        //    cin.get(input);
        //    continue;
        }else if(isupper(input)){  // 如果是大写字母,则转为小写字母并输出 
            input=tolower(input);
        //    cout<<"3,";
            cout<<input;
        
        }
        
        // 再次获取输入 
        cin.get(input);
        
        
        
    }
    
    return 0;
} 

img