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

来源:互联网 发布:汽车音响电脑调音软件 编辑:程序博客网 时间:2024/06/02 10:34

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
4levelabcdenoonhaha
 

Sample Output
yesnoyesno

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

#include<stdio.h>#include<string.h>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<stdio.h>
#include<string.h>
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;
}

0 0
原创粉丝点击