因此,我尝试解决这一问题,该算法对一个字符串中两个音节之间的元音数量进行计数并打印。
我已经编写了一个程序,但是它总是给我错误的答案,我真的不知道有什么问题。
例如,对于输入:“oasele sunt fragile”,它应该打印4,但实际上打印5。
#include <iostream>
#include <cctype>
#include <string.h>
using namespace std;
char s[255];
int isvoc(int i)
{
char c=tolower(s[i]);
if (isspace(c)) return 0;
else
if ((c=='a') || (c=='e') || (c=='i') || (c=='o') || (c=='u')) return 1;
else return 0;
}
int main()
{
cin.get(s,255);
int l=strlen(s),nr=0;
for (int i=1;i<l-1;i++)
if (!(isvoc(i-1)) && (isvoc(i)) && !(isvoc(i+1))) nr++;
cout<<nr;
}
最佳答案
您正在计算出现在非元音之间的元音。因此,在“a e i”中,您将得到1而不是0的计数。您将需要:
if (iscon(i-1) && isvoc(i) && iscon(i+1))
可以通过多种方式实现iscon(),例如
bool iscon(int i) { return isalpha(str[i]) && !isvoc(i); }