u010524624 2023-09-04 23:03 采纳率: 70%
浏览 6

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

img

img


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

img

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-05 08:21
    关注

    【以下回答由 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中,最后再统一输出。这样可以确保转换后的字符都按照顺序输出。

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



    【相关推荐】



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

报告相同问题?

问题事件

  • 修改了问题 9月4日
  • 修改了问题 9月4日
  • 修改了问题 9月4日
  • 创建了问题 9月4日