| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 487 人关注过本帖
标题:这个输出是怎么回事,求大神解答
只看楼主 加入收藏
wang20142052
Rank: 1
等 级:新手上路
帖 子:10
专家分:6
注 册:2015-9-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
这个输出是怎么回事,求大神解答
Sample Input
a
tv
ptoui
bontres
zoggax
wiinq
eep
houctuh
end
 

Sample Output
<a> is acceptable.
<tv> is not acceptable.
<ptoui> is not acceptable.
<bontres> is not acceptable.
<zoggax> is not acceptable.
<wiinq> is not acceptable.
<eep> is acceptable.
<houctuh> is acceptable.
判读条件

1:有元音字母

2:不能三个连续元音或辅音

3.不能连续两个相同的字母,除非ee或oo
#include<stdio.h>
#include<string.h>
int sub(char x)
{
    if(x=='a'||x=='e'||x=='i'||x=='o'||x=='u')  
        return 1;  
    else
        return 0;  
}
int main()
{
    int len,i,flag=1;
    char str[22];
    while (scanf("%s",&str)!=EOF)
    {
        len=strlen(str);
        for (i=0;i<len;i++)
        {
           if (sub(str[i]))
           break;
        }
        if(i==len) flag=0;
        for (i=1;i<len;i++)
        {
            if (str[i]==str[i-1])
            {
                if(str[i-1]=='o'||str[i-1]=='e') continue;
                else {  flag=0; break;}
            }
        }
        for (i=2;i<len;i++)
        {
            if (flag==0) break;
            if (sub(str[i])&&sub(str[i-1])&&sub(str[i-2])) flag=0;
            if (!sub(str[i])&&!sub(str[i-1])&&!sub(str[i-2])) flag=0;
        }
        if (flag==0)
        printf ("<%s> is not acceptable.\n",str);
        else
        printf ("<%s> is acceptable.\n",str);
    }
}
这是什么情况,求大神指导
图片附件: 游客没有浏览图片的权限,请 登录注册
2015-09-18 20:20
小王KING
Rank: 2
等 级:论坛游民
威 望:1
帖 子:29
专家分:69
注 册:2015-9-9
收藏
得分:10 
#include<stdio.h>
#include<string.h>
int sub(char x)
{
    if(x=='a'||x=='e'||x=='i'||x=='o'||x=='u')  
        return 1;  
    else
        return 0;  
}
int main()
{
    int len,i,flag=1;
    char str[22];
    while (scanf("%s",&str)!=EOF)
    {
        len=strlen(str);
        for (i=0;i<len;i++)
        {
           if (sub(str[i]))
           break;
        }
        if(i==len) flag=0;
        for (i=1;i<len;i++)
        {
            if (str[i]==str[i-1])
            {
                if(str[i-1]=='o'||str[i-1]=='e') continue;
                else {  flag=0; break;}
            }
        }
        for (i=2;i<len;i++)
        {
            if (flag==0) break;
            if (sub(str[i])&&sub(str[i-1])&&sub(str[i-2])) flag=0;                  //既然这里条件不成立,应该跳出循环加个break,虽然这里不影响程序结果。
            if (!sub(str[i])&&!sub(str[i-1])&&!sub(str[i-2])) flag=0;                //这里同上,
        }
        if (flag==0)
        printf ("<%s> is not acceptable.\n",str);
        else
        printf ("<%s> is acceptable.\n",str);
    }
}

你是不是对你最后发的那张图的最后一个结果感到奇怪呢,那是因为你刚开始循环有一个flag=1的初值,走完一圈循环没有把它的值重新归位,就是在循环开头或者结尾,加一个flag=1。
2015-09-18 21:38
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:10 
程序代码:
#include<stdio.h>
#include<string.h>
int test(char y){
    switch(y){
        case 'a':case 'e':case 'i':case 'o':case 'u':
            return 1;
    }
    return 0;
}
int sub(char *x){
    int len=strlen(x);
    if(len>1)
    for(int i=0;x[i+1]!='\0';i++){
        if(x[i]=='e'&&x[i+1]=='e'||x[i]=='o'&&x[i+1]=='o')
        return 1;
        if(x[i]==x[i+1])
        return 0;
    }
    if(len>2)
    for(int i=0;x[i+2]!='\0';i++)
        if(test(x[i])==test(x[i+1])&&test(x[i])==test(x[i+2]))return 0;
    for(int i=0;x[i]!='\0';i++)
        if(test(x[i]))return 1;
    return 0;  
}
int main(){
    int len,i,flag=1;
    
    char str[8][20]={"a","tv","ptoui","bontres","zoggax","wiinq","eep","houctuh"};
    for(int i=0;i<8;i++)
        if(sub(str[i]))
            printf("<%s> is acceptable.\n",str[i]);
        else
            printf("<%s> is not acceptable.\n",str[i]);
}

剑栈风樯各苦辛,别时冰雪到时春
2015-09-18 22:41
wang20142052
Rank: 1
等 级:新手上路
帖 子:10
专家分:6
注 册:2015-9-8
收藏
得分:0 
已解决

黑白线
2015-09-19 15:38
快速回复:这个输出是怎么回事,求大神解答
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.107550 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved