【网络赛前必刷题】杭电 2029 回文串判定

Palindromes _easy version

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 35293    Accepted Submission(s): 21480
Problem Description
“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。
 
Input
输入包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,后面紧跟着是n个字符串。
 
Output
如果一个字符串是回文串,则输出"yes",否则输出"no".
 
Sample Input

4 level abcde noon haha
 

Sample Output

yes no yes no

//这题出现error的情况主要是后半段的数学问题,strlen运用的时候是不会读最后的‘\0’的
//一开始我是在嵌套的if语句里用了个开关函数,来测试是否每一个都有对应的字符,但是失败了= =,应该是用到的字符太多比较麻烦,没有算过来= =,等下把那个错的也贴在下面,然后那个运行之后是全部都是no= =

#include#include int main(){ int n ,m ,i ,j ; char str [ 100 ]; while(EOF !=scanf ( "%d" ,&n )) { getchar ();// 读掉换行符 while(n --) { gets (str ); m=strlen(str );// 第一次用strlen函数 for(i = 0 ;i <m / 2 ;i ++)//只需要测试一半 { if(str [i ]!=str [m -i - 1 ]) break; } if(i ==m / 2 ) printf ( "yes\n" ); else printf ( "no\n" ); } } return 0 ;}



//错误版
#include
#include
int main(){
    int n,m,i,j;
    char str[100];
        while(EOF!=scanf("%d",&n))
        {
            getchar();
            while(n--)
            {
                gets(str);
                m=strlen(str);
                for(i=0;i<(m/2);i++)
                {
                    if(str[i]==str[m-i-1])
                        j++;
                }
                if(j==(m/2))
                    printf("yes\n");
                else
                    printf("no\n");
            }
        }
        return 0;
}

你可能感兴趣的:(各类error,杭电,2016.9)