请大家帮我看下为什么我的代码AC不了 求解答 这是杭电1039 输入例子结果都是正确的啊

#include<stdio.h>#include<string.h>intmain(){/*freopen("input.txt","r",stdin);/*freop... #include<stdio.h>
#include<string.h>

int main()
{
/*freopen("input.txt","r",stdin);
/*freopen("slyar.txt", "w", stdout);*/
char s[100];
int i;
while((scanf("%s",s)!=EOF))
{
if(strcmp(s,"end")==0) break;
for(i=0;s[i]!='\0';i++)
{
if((s[i]=='a')||(s[i]=='e')||(s[i]=='i')||(s[i]=='o')||(s[i]=='u'))
{
if((s[i+1]=='a')||(s[i+1]=='e')||(s[i+1]=='i')||(s[i+1]=='o')||(s[i+1]=='u'))
{
if((s[i+2]=='a')||(s[i+2]=='e')||(s[i+2]=='i')||(s[i+2]=='o')||(s[i+2]=='u'))
{
printf("<%s> is not acceptable.\n",s);
break;
}
}
}
else if((s[i]!='a')&&(s[i]!='e')&&(s[i]!='i')&&(s[i]!='o')&&(s[i]!='u'))
{
if((s[i+1]!='a')&&(s[i+1]!='e')&&(s[i+1]!='i')&&(s[i+1]!='o')&&(s[i+1]!='u')&&s[i+1]!='\0')
{
if((s[i+2]!='a')&&(s[i+2]!='e')&&(s[i+2]!='i')&&(s[i+2]!='o')&&(s[i+2]!='u')&&s[i+1]!='\0')
{
printf("<%s> is not acceptable.\n",s);
break;
}
}
}
if((s[i]!='e')&&(s[i]!='o'))
{
if(s[i]==s[i+1])
{
printf("<%s> is not acceptable.\n",s);
break;
}
}
}
if(s[i]=='\0') printf("<%s> is acceptable.\n",s);
}

return 0;
}
我用题目所给的例子都是正确的 希望大家能够指出我这个程序为什么AC不过
展开
 我来答
QQ469985793
推荐于2016-05-09 · TA获得超过153个赞
知道答主
回答量:126
采纳率:100%
帮助的人:99.8万
展开全部
//附上AC代码
#include<stdio.h>
#include<string.h>
int main()
{
char stop[5]="end",pw[30];
int len,i,Flag,vowel_num,is_vowel,v_count,c_count;
while(scanf("%s",pw)!=EOF && strcmp(pw,stop)!=0)
{
Flag=1;
vowel_num=0;
len=strlen(pw);
v_count=c_count=0;//元音个数 辅音个数
for(i=0;i<len;i++)
{
is_vowel=0;//初始元音标记
switch(pw[i])
{
case 'a':
if(c_count!=0){
c_count=0;
v_count=0;
}
vowel_num++;
is_vowel=1;//更改标记
v_count++;// 元音个数 ++
if(v_count%3==0 || pw[i]==pw[i+1])
Flag=0;
break;
case 'e':
if(c_count!=0){
c_count=0;
v_count=0;
}
vowel_num++;
is_vowel=1;
v_count++;
if(v_count%3==0)
Flag=0;
break;
case 'i':
if(c_count!=0){
c_count=0;
v_count=0;
}
vowel_num++;
is_vowel=1;
v_count++;
if(v_count%3==0 || pw[i]==pw[i+1])
Flag=0;
break;
case 'o':
if(c_count!=0){
c_count=0;
v_count=0;
}
vowel_num++;
is_vowel=1;
v_count++;
if(v_count%3==0)
Flag=0;
break;
case 'u':
if(c_count!=0){
c_count=0;
v_count=0;
}
vowel_num++;
is_vowel=1;
v_count++;
if(v_count%3==0 || pw[i]==pw[i+1])
Flag=0;
break;
}
if(is_vowel!=1)//遇到辅音
{
if(v_count!=0)//上一个是元音 辅音 和 元音 个数归0
{
v_count=0;
c_count=0;
}
c_count++;// 辅音个数 ++
if(c_count%3==0 || pw[i]==pw[i+1])//满足 辅音不连续超过3个 并且不连续2个辅音
Flag = 0;
}
}
if(vowel_num==0)//没有遇到元音 标记为0
Flag = 0;
if(Flag != 0)
printf("<%s> is acceptable.\n",pw);
else
printf("<%s> is not acceptable.\n",pw);
}
return 0;
}
追问
高手兄 请帮我检查下错误 如何才能AC过吧....我的结果用测试例子来试都是对的...
追答
当没有出现元音字母的时候 ,eg  cb  你的程序判定是 is accept . 但是实际上是is not .

附上修改后AC 代码 :

#include
#include
/*
它必须包含至少一个元音。
它可以不包含3连续的元音或3连续辅音。
它可以不包含2相同字母的连续发生,
除了'EE'或'OO ' ('A,'E','I','O','U';
所有其他字母都是辅音字母对于这个问题的目的,元音
*/
int main()
{
char s[100];
int i,flag;
while((scanf("%s",s)!=EOF))
{
if(strcmp(s,"end")==0) break;
flag = 0;
for(i=0;s[i]!='\0';i++)//连续3个元音
{
if( (s[i]=='a')||(s[i]=='e')||(s[i]=='i')||(s[i]=='o')||(s[i]=='u'))
{
flag = 1;//至少有一个元音
if(( (s[i+1]=='a')||(s[i+1]=='e')||(s[i+1]=='i')||(s[i+1]=='o')||(s[i+1]=='u') )&& s[i+1]!='\0')
{
if((( s[i+2]=='a')||(s[i+2]=='e')||(s[i+2]=='i')||(s[i+2]=='o')||(s[i+2]=='u') )&& s[i+2]!='\0')//连续3个元音
{
flag = 0;//不符合条件
break;
}
}
}else if((s[i]!='a')&&(s[i]!='e')&&(s[i]!='i')&&(s[i]!='o')&&(s[i]!='u'))
{
if((s[i+1]!='a')&&(s[i+1]!='e')&&(s[i+1]!='i')&&(s[i+1]!='o')&&(s[i+1]!='u')&&s[i+1]!='\0')
{
if((s[i+2]!='a')&&(s[i+2]!='e')&&(s[i+2]!='i')&&(s[i+2]!='o')&&(s[i+2]!='u')&&s[i+2]!='\0')//i+2
{
flag = 0;
break;
}
}
}
if((s[i]!='e')&&(s[i]!='o'))//连续EE 00
{
if(s[i]==s[i+1])
{
//printf(" is not acceptable.\n",s);
flag = 0;
break;
}
}
}
if(flag == 0)
printf(" is not acceptable.\n",s);
else
printf(" is acceptable.\n",s);
}

return 0;
}
上海巴鲁图工程机械科技有限公司_
2022-05-15 广告
光电编码器,是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。光电编码器每转输出60(我们用老板没有说)个脉冲,五线制。其中两根为电源线,三根为脉冲线(A相、B相、Z)。电源的工作电压为 (+5~+24V)直流电源。光... 点击进入详情页
本回答由上海巴鲁图工程机械科技有限公司_提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式