CodeDance2023 2023-11-28 23:41 采纳率: 96%
浏览 9
已结题

C语言回文字符串问题

oj说我答案错误,可是我测了好多数据都是正确的,程序员们能看出哪里出问题了吗?麻烦在我的代码的基础上进行修改,谢谢

img


#include <stdio.h>
#include <string.h>
int main()
{
    int n,flag;
    char str[32];
    scanf("%d", &n);
    getchar();                 //清理缓冲区的回车键,防止gets()结束输入。
    for (int k = 1; k <= n; k++)
    {
        flag = 0;
        gets(str);
        for (int i = 0; i <= strlen(str) / 2 - 1; i++)
        {
            if (str[i] == str[strlen(str) - i - 1])
            {
                flag = 1;
            }
            else
            {
                flag = 0;
                break;
            }
        }
        if (flag == 1)
        {
            printf("yes");
        }
        else
        {
            printf("no");
        }
        if (k < n)
        {
            printf("\n");
        }
    }
    return 0;
}
  • 写回答

2条回答 默认 最新

  • 想要AC的dly 2023-11-28 23:53
    关注

    如果输入的字符串长度是1你这个程序输出的结果就是错误的,因为正确答案是yes而你的程序会输出no

    
    #include <stdio.h>
    #include <string.h>
    int main()
    {
        int n,flag;
        char str[32];
        scanf("%d", &n);
        getchar();                 //清理缓冲区的回车键,防止gets()结束输入。
        for (int k = 1; k <= n; k++)
        {
            flag = 0;
            gets(str);
            for (int i = 0; i <= strlen(str) / 2 - 1; i++)
            {
                if (str[i] == str[strlen(str) - i - 1])
                {
                    flag = 1;
                }
                else
                {
                    flag = 0;
                    break;
                }
            }
            if (flag == 1||n==1)
            {
                printf("yes");
            }
            else
            {
                printf("no");
            }
            if (k < n)
            {
                printf("\n");
            }
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月7日
  • 已采纳回答 11月29日
  • 修改了问题 11月28日
  • 创建了问题 11月28日