我尝试编写一个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;
}
答案 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
应该返回int
而iscapital
应该返回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)