制作一个布尔值试图打印出大写字母
Making a Boolean trying to print out uppercase letters
objective 是为了让所有大写字母都打印成一个字符串,但是,我必须保留 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”这样的案例时,它都会把它变成“HDnigeria”,即使我想让它说“CHAD”。它还删除了我不想要的大写字母,它应该删除小写字母。 “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()
通常效率更高。
objective 是为了让所有大写字母都打印成一个字符串,但是,我必须保留 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”这样的案例时,它都会把它变成“HDnigeria”,即使我想让它说“CHAD”。它还删除了我不想要的大写字母,它应该删除小写字母。 “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()
通常效率更高。