用C语言编写在一个字符串中找出元音字母a,e,i,o,u出现的次数。 需要区分 大小写!! 只统计小写元音字

#include <stdio.h>
void HowVowel(int *pr,char *ps)
{
char v[7]="aeiou",i;
for(;*ps;ps++)
for(i=0;*(v+i);i++)
if((*ps|0x20)==*(v+i))
pr[i]++;
}

void main(void)
{
char Str[200]="";
int Result[5]={0,},i;
gets(Str);
HowVowel(Result,Str);
for(i=0;i<5;printf("%d ",Result[i++]));
printf("\n");
return 0;
}
上边是目前的代码 格式就是
样例输入If so, you already have a Google Account. You can sign in on the right.
样例输出5 4 3 7 3
但是 目前存在问题就是输入大写也算 求帮忙添加代码来把大写否定了

  #include <stdio.h>

  void HowVowel(int *pr,char *ps)

  {

  char v[7]="aeiou";

  for(;*ps;ps++)

  {

  switch(*ps)

  {

  case 'a':

  ++pr[0];

  break;

  case 'e':

  ++pr[1];

  break;

  case 'i':

  ++pr[2];

  break;

  case 'o':

  ++pr[3];

  break;

  case 'u':

  ++pr[4];

  break;

  default:

  break;

  }

  }

  }

  int main(void)

  {

  char Str[200]="";

  int Result[5]={0,},i;

  gets(Str);

  HowVowel(Result,Str);

  for(i=0;i<5;printf("%d ",Result[i++]));

  printf("\n");

  return 0;

  }


追问

不对啊 这是C语言 中的么 我怎么不可以
各种提示

错误 1 error C3872: “0x3000”: 此字符不允许在标识符中使用

错误 2 error C2014: 预处理器命令必须作为第一个非空白空间启动
错误 5 error C2061: 语法错误 : 标识符“  void”

追答

你是什么编译器呢 我的是vc6,。0

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-26
在你的代码上的修改,去掉|0x20,这个是包含大小写的;
void HowVowel(int *pr,char *ps)
{
char v[7]="aeiou",i;
for(;*ps;ps++)
for(i=0;*(v+i);i++)
if((*ps)==*(v+i))
pr[i]++;
}
修改一下:
void HowVowel(int *pr,char *ps)
{
char v[]="aeiou",i;
int count[26]={0}
for(;*ps;ps++)
if(*ps<='z' && *ps>='a')count[*ps-'a']++;各个字母

for(i=0;v[i];i++)pr[i]=count[v[i]-'a'];
}本回答被提问者采纳
第2个回答  2013-02-26
只要小写的话
if(*ps==*(v+i))

if((*ps|0x20)==*(v+i))
是一个取巧的办法,可以将‘A'-’Z'转换为'a'-'z'
相似回答