【代码1——】
#include
#include
int main()
{
int n;
int y[5];
char c;
scanf("%d%*c", &n);
while (n--)
{
y[0] = y[1] = y[2] = y[3] = y[4] = 0;
while ((c = getchar()) != '\n')
{
switch (tolower(c))
{
case 'a':
y[0]++;
break;
case 'e':
y[1]++;
break;
case 'i':
y[2]++;
break;
case 'o':
y[3]++;
break;
case 'u':
y[4]++;
break;
default :
break;
}
}
printf("a:%d\n", y[0]);
printf("e:%d\n", y[1]);
printf("i:%d\n", y[2]);
printf("o:%d\n", y[3]);
printf("u:%d\n", y[4]);
if (n) putchar('\n');
}
return 0;
}
【注】
也许字母会有大小写之分,记得用tolower()或toupper()换成统一的格式就可以了。
tolower
语法:
#include
功能:函数字符ch的小写形式。
toupper
语法:
#include
功能:函数字符ch的大写形式。
【代码2-—— 哈希实现】
#include
#include
#include
#include
#include
int T , sign[200] , hash[5]={'a' , 'e' , 'i' , 'o' , 'u'};
char str[105];
int main()
{
scanf( "%d%*" ,&T );
while( T-- )
{
memset( sign , 0 ,sizeof(sign) );
gets( str );
int len = strlen ( str );
for( int i=0 ; i
for( int i=0 ;i< 5;++i )
printf( "%c:%d\n" ,hash[i],sign[hash[i]]);
if( T > 0)
puts( "" );
}
return 0;
}
【代码3——】
#include
#include
#include
int main()
{
int i,t,n=1;
char str[100];
char tabstr[]="aeiou";
int tab[300];
scanf("%d%*c",&t);
while(t--)
{
gets(str);
memset(tab,0,sizeof(tab));
for(i=0;str[i];i++)
tab[str[i]]++;
if(n++!=1) putchar('\n');
for(i=0;i<5;i++)
printf("%c:%d\n",tabstr[i],tab[tabstr[i]]);
}
//system("pause");
return 0;
}
估计是换行符的问题
你用一个字符接收getchar的值,然后多输入几个案例,调试一下,观察这个字符和str字符串的结果