杭电oj2029

http://acm.hdu.edu.cn/showproblem.php?pid=2029

image.png

思路:
首先获取用户输入字符串的长度,然后找到中间的位数,作为循环终止的条件,第一位与最后一位进行判断,同时,第一位要前进一位,最后一位要后退一位,如果相等,则继续,如果不相等,则直接退出循环。

代码如下:

#include <stdio.h>
#include <string.h>
int main() 
{
    int n;
    char a[100];
    while(scanf("%d",&n)!=EOF)
    {
        while (n--)
        {
            scanf("%s",a);
            int num = strlen(a);
            int i,j;
            int back=1;
            for(i=0,j=num-1;i<=num/2;i++,j--)
            {
                if(a[i]==a[j])
                {
                    back=1;
                    continue;
                }
                else
                {
                    back=0;
                    break;
                }
            }
            if(back==1)
            {
                printf("yes\n");
            }
            else
            {
                printf("no\n");
            }
        }
    }
    return 0;
}

反思:
在完成要求是,须判断是否回文,然而,在输出"yes",的时候,老是会输出多次,这是原先部分代码如下,之后想到java中有布尔值作为判断,所以就定义一个变量,当两字符相等时,便不改变原先的值,当不相等时,就改变。

for(i=0,j=num-1;i<=num/2;i++,j--)
            {
                if(a[i]==a[j])
                {
                    printf("yes\n"); 
                    continue;
                } 
                else
                {
                    printf("no\n");
                    break;
                }
            }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容