您的位置:首页 > 其它

UVa 489 - Hangman Judge我就不明白了,哪里错了?(已解决)

2011-09-30 23:12 459 查看
为什么一直WA!!

苍天呀,大地啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 求解脱!


我的十一啊

=================================2011.10.1========================================

后记:感谢CC***,感谢党,感谢国家,感谢饶立学长,最终发现问题了,原来是最后输出把chickened写成

chickende了,因为这个拼写错误,无限次的WA,搞的这两天无比郁闷。

这题不是难题,本来觉得可以一次AC的,结果困了这么久,这就像打对战游戏时,你和一个高手打,被高手虐的死去活来,可能也不会觉得有什么,顶多觉得:唉,和高手差距太远啦!

但是如果和一个与你水平差不多的,甚至比你还水的对手打,结果被虐的死去活来的时候,你会做何感想呢?反正我是想砸电脑!

好在无论如何,当看到Accept的那一刻,还是挺开心的。

下面代码中的错误就不更正了,以警示自己和来人!

/**Author: Gneveek 
  * Data: 2011-9-29 
  * Descripition: UVa - 489  Hangman Judge
 */ 
#include <stdio.h>
#include <string.h>
#define MAXN 1000
#define TRUE 1
#define FALSE 0

int is_exist(char str[], char c);

int main()
{    
    int n,i,j,right,wrong;  //right存放猜正解的字符的个数,最后和正确的字符串的长度相比,如果相等就认为全猜对了;wrong记猜错的次数
    int alen,blen;          //a[] 和 b[]的长度
    int flag;
    char a[MAXN],b[MAXN];
    while(scanf("%d",&n) && n != -1)
    {
        right = wrong = i = j = 0;
        getchar();     //clear '\n'
        gets(a);
        gets(b);
        alen = strlen(a); blen = strlen(b);
        for(i=0; i<blen; i++)
        {
            //如果错误次数大于等于7 或者 正确的字母数等于答案串的长度,退出for 循环
            if(wrong >= 7 || right == alen)
                break;
            flag = FALSE;//初始化flag,标记第二个串中当前字符是否在前面出现过,比如chese当扫描到第二个e时,就设置flag = true
            
            for(j=0; j<i; j++)
            {
                if(b[j] == b[i]){
                    flag = TRUE;
                    break;
                }
            }            
            if(flag) 
                continue;  //如果重复就continue,进入下一次循环
             //上面已经排除了重复的字符,下面直接判断 
             if(is_exist(a,b[i]) == 0)            
                wrong++;            
            else
                right += is_exist(a,b[i]); //函数返回猜中字符的个数
        }
        //根据情况打印3种不同的结果
        printf("Round %d\n",n);        
        if(wrong >= 7)
            printf("You lose.\n");
        else if(right == alen)
            printf("You win.\n");
        else
            printf("You chickende out.\n");
    }
    return 0;
}

int is_exist(char str[], char c)
{    
    int i,count = 0;
    for(i=0; i<strlen(str); i++)
        if(str[i] == c)
            count++;    
    return count;
}
































                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: