Uva 489: Hangman Judge

记得刚做UVa时,这个题卡了好几次,后来用strchr函数做的才过的,不过后来用普通方法也实现了 。

//方法一:
#include<stdio.h>
#include<string.h>
int main()
{
    char a[1000],b[1000],c[27],d[27];
    int i,k,num,count,number,flag,fgg;
    while(1)
    {
        scanf("%d",&k);
        memset(a,'\0',sizeof(a));
        memset(b,'\0',sizeof(b));
        memset(c,'\0',sizeof(c));
        memset(d,'\0',sizeof(d));
        count=0,number=0,num=0,flag=0,fgg=0;
        if(k==-1)
            break;
        printf("Round %d\n",k);
        scanf("%s",a);
        scanf("%s",b);
        for(i=0; i<strlen(a); i++)
            if(strchr(c,a[i])==NULL)
                c[num++]=a[i];
        num=0;
        for(i=0; i<strlen(b); i++)
            if(strchr(d,b[i])==NULL)
                d[num++]=b[i];
        for(i=0; i<strlen(d); i++)
        {
            if(strchr(c,d[i])!=NULL)
                count++;
            else
                number++;
            if(number==7)
            {
                printf("You lose.\n");
                fgg=1;
                break;
            }
            if(count==strlen(c))
            {
                printf("You win.\n");
                fgg=1;
                break;
            }
        }
        if(fgg==0)
            printf("You chickened out.\n");
    }
    return 0;
}

//方法2:
#include<stdio.h>
#include<string.h>
int main()
{
    char a[1000],b[1000],c[28],d[28],a1[27],b1[27];
    int i,j,k,count,number,flag,fgg,cct,sum;
    while(1)
    {
        scanf("%d",&k);
        if(k==-1)
            break;
        memset(a,'\0',sizeof(a));
        memset(b,'\0',sizeof(b));
        memset(c,'0',sizeof(c));
        memset(d,'0',sizeof(d));
        memset(b1,'\0',sizeof(b1));
        memset(a1,'\0',sizeof(a1));
        count=0,number=0,flag=0,fgg=0,sum=0,j=0;
        printf("Round %d\n",k);
        scanf("%s",a);
        scanf("%s",b);
        j=0;
        for(i=0; i<strlen(a); i++)
        {
            cct=a[i]-'a'+1;
            if(c[cct]=='0')
                a1[j++]=cct+'a'-1;
            c[cct]='1';
        }
        j=0;
        for(i=0; i<strlen(b); i++)
        {
            cct=b[i]-'a'+1;
            if(d[cct]=='0')
                b1[j++]=cct+'a'-1;
            d[cct]='1';
        }
        for(i=0; i<strlen(b1); i++)
        {
            if(strchr(a1,b1[i])!=NULL)
                count++;
            else
                number++;
            if(number==7)
            {
                printf("You lose.\n");
                fgg=1;
                break;
            }
            if(count==strlen(a1))
            {
                printf("You win.\n");
                fgg=1;
                break;
            }
        }
        if(fgg==0)
            printf("You chickened out.\n");
    }
    return 0;
}


你可能感兴趣的:(c,null)