杭电ACM2027 网址 我的哪错了?? http://acm.hdu.edu.cn/showproblem.php?pid=2027

#include<stdio.h>#include<string.h>voidmain(){inta,e,i,o,u,n,j,x;charstr[100];scanf("... #include<stdio.h>
#include<string.h>
void main()
{
int a,e,i,o,u,n,j,x;
char str[100];
scanf("%d",&n);
x=0;
while(1)
{
x++;
a=e=i=o=u=0;
getchar();
gets(str);
for(j=0;j<strlen(str);j++)
{
if(str[j]=='a')a++;
if(str[j]=='e')e++;
if(str[j]=='i')i++;
if(str[j]=='o')o++;
if(str[j]=='u')u++;
}
printf("a:%d\n",a);
printf("e:%d\n",e);
printf("i:%d\n",i);
printf("o:%d\n",o);
printf("u:%d\n",u);
if(x!=n)printf("\n");
if(x==n)break;
}
}
把gether()移到外面就过了??
展开
 我来答
zmryyj
2012-12-12 · TA获得超过1161个赞
知道小有建树答主
回答量:591
采纳率:0%
帮助的人:168万
展开全部
【代码1——】

#include <ctype.h>
#include <stdio.h>
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 <ctype.h> int tolower( int ch );
功能:函数字符ch的小写形式。
toupper
语法:
#include <ctype.h> int toupper( int ch );
功能:函数字符ch的大写形式。

【代码2-—— 哈希实现】

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<time.h>
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<len ; ++i )
sign[str[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<stdio.h>
#include<string.h>
#include<stdlib.h>
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;
}
pfzq303
2012-12-04 · TA获得超过172个赞
知道答主
回答量:98
采纳率:0%
帮助的人:40.1万
展开全部
估计是换行符的问题
你用一个字符接收getchar的值,然后多输入几个案例,调试一下,观察这个字符和str字符串的结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式