写一个C++函数用于统计字符串中所有英文字母中的各元音字母个数,并进行测试

速度啊~~谢谢

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
void main()
{
string str;
cout<<"请输入要判断的字符串:\n";
char buf[] = {'A', 'E', 'I', 'O', 'U'};
getline(cin, str, '\n'); //得到输入

transform(str.begin(), str.end(), str.begin(), toupper); //将所有字符转换成大写

const int size = sizeof(buf); //计算元音字母个数
unsigned long Count[size]; //用于存储对应元音字母的个数

int i,j;
for(i=0; i<size; i++)
Count[i]=0;
for(i=0; i<sizeof(buf); i++)
{
for(j=0; j<str.size(); j++)
{
if (str[j] == buf[i])
{
Count[i]++;
}
}
}

for(i=0; i<size; i++)
{
cout<<"元音字母 "<<(char)buf[i]<<" 的个数为:"<<Count[i]<<endl;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-01-11
#include <iostream>
#include <string>
using namespace std;
void func(string s,int a[]);
int main()
{
string str = "AVERWT245537-+-QWabceeiouafdagfalldhgahg";
int a[5] = {0};

func(str,a);

cout<<"a/A times: "<<a[0]<<endl;
cout<<"e/E times: "<<a[1]<<endl;
cout<<"i/I times: "<<a[2]<<endl;
cout<<"o/O times: "<<a[3]<<endl;
cout<<"u/U times: "<<a[4]<<endl;

return 0;
}

void func(string s,int a[])
{

int i = 0;
while (i < s.length())
{
if (isalpha(s[i]))
{
switch (s[i])
{
case 'a':
case 'A':
++a[0];
break;
case 'e':
case 'E':
++a[1];
break;
case 'i':
case 'I':
++a[2];
break;
case 'o':
case 'O':
++a[3];
break;
case 'u':
case 'U':
++a[4];
break;

}
}

++i;
}

}
相似回答