C ++函数,用于检查char是否为大写字母,并计算给定字符串中的大写字母数

时间:2017-01-04 16:34:55

标签: c++

我尝试编写一个C ++函数来检查char是否是给定字符串中的大写字母。

这是我的尝试:

#include<iostream>
#include <conio.h>
#include<string>
using namespace std;
int iscapital(char x)
{
 if (x>='A'&&x<='Z')    return 1;

 else  return 0;
}
main()
{
char a[20];int len; int c=0;
cout<<"enter your line: ";
cin>>a;
len=strlen(a);
for (int i=0;i<=len;i++)
iscapital(a[i]);
if (iscapital)
{
    c++;
}

cout<<"capital letter in string is: "<<c;
}

3 个答案:

答案 0 :(得分:2)

您没有正确使用iscapital

for (int i=0;i<=len;i++)
    iscapital(a[i]); // Call the function, ignore the result
if (iscapital)   // <- This is not valid C++
{
    c++;
}

你想要的是这个

for (int i=0;i<=len;i++)
    if (iscapital(a[i]))
    {
        c++;
    }

正如其他人所评论的那样,查找std::isupper以查明字母是否为大写,std::count, std::count_if来计算值的出现次数或条件为真的次数。

此外,main应该返回intiscapital应该返回bool。使用int表示true或false值已过时,不应在新代码中使用。最后,请考虑使用std::string代替char []。使用字符数组来表示字符串是C的做事方式。 C ++使用std::string这个很微妙的问题。

答案 1 :(得分:2)

您的代码应如下所示:

int iscapital(char x)
{
       if (x >='A' && x <= 'Z')    return 1;
       else  return 0;
}

int main()
{
  char a[20];int len; int c=0;
  cout<<"enter your line: ";
  cin.getline(a , 20);      
  // Note : ' getline ' will read the entire line written in the console and will stop only at the end line mark...will include and the white spaces .
  // http://stackoverflow.com/questions/4745858/stdcin-getline-vs-stdcin

  len=strlen(a);
  for (int i = 0;i < len;i++)
  {
    if (iscapital(a[i]))
    {
       c++;
    }
  }
  cout<<"capital letter in string is: "<<c;

  return 0;
 }

答案 2 :(得分:1)

更正您的代码:

  • C:\php\instantclient_11_2应该返回一个不是整数的bool。

  • IsCapital()这也是你使用[len]所以纠正它:

for (int i=0; i<=len; i++)

  • 这是for (int i = 0; i <len; i++)的内容?这不是如何调用函数if (iscapital) { c++;}来调用它添加isCapital和参数。

  • 让圈内的()不在外面,因为你知道你的循环只有一个陈述,只要你不添加括号。

所以代码看起来像:

if(iscapital)