微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

进行布尔运算,尝试打印出大写字母

如何解决进行布尔运算,尝试打印出大写字母

目标是使所有大写字母都打印成字符串,但是,我必须保留bool函数并在代码中使用它。我已经解决了过去的一些问题,但遇到了一个使我无法修复的问题。测试用例是“ HEllO”->“ HEO”“ my”->“”“ NAME”->“ NAME”“ Is”->“ I”“ AnDeRsON”->“ ADRON”。

#include <iostream>
using namespace std;

  bool isUpperCase(char ch){
    if(ch >= 'A' and ch <= 'Z'){
      return true;
        }
        return false;
        }

int main() {

  string a = "";
  cin >> a;
  string c = "";
  
  for(int i = 0; i < a.length(); i++)
    {
      if (isUpperCase(a[i])) i++;
        {
          c += a[i];
        }

    }
  cout << c << endl;
}

现在,每当我处理“ CHADnigeria”之类的案件时,即使我希望它说“ CHAD”,它也会变成“ HDnigeria”。它还删除了我不需要的大写字母,并且应该删除了小写字母。 “ DancingInTheSky”变为“ ancingnheky”,应为“ DITS”。提醒您不要更改bool函数

解决方法

我更新了您的程序,使其可以正常工作:

#include <iostream>
using namespace std;

bool isUpperCase(char ch){
    if(ch >= 'A' and ch <= 'Z'){
            return true;
    }
    return false;
}

int main() {

    string a = "";
    cin >> a;
    string c = "";

    for(int i = 0; i < a.length(); i++)
    {       
            if (isUpperCase(a[i]))
            {
                    c += a[i];
            }

    }
    cout << c << endl;
}

您的错误是什么:您将i++放在if语句之后,这导致了奇怪的输出。

希望我能有所帮助

,

编写return condition;而不是if (condition) return true; else return false;是一个很好的编程实践。我会将您的isUpperCase函数编写为:

bool isUpperCase(char ch) {
    return (ch >= 'A' and ch <= 'Z');
}

您要查找的错误是在主要功能中,有i++会引起麻烦。您写道:

if (isUpperCase(a[i])) i++;
    {
      c += a[i];
    }

编译器将其理解为:

if (isUpperCase(a[i])) {
    i++;
}
c += a[i];

此外,当您在C ++中将单个字符添加到字符串中时,我建议您使用push_back()方法而不是+运算符。因此c += a[i];将是c.push_back(a[i]);。两者都可以正常工作,但是push_back()通常更有效。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。