gpt4 book ai didi

无法从中找到是否是回文

转载 作者:行者123 更新时间:2023-11-30 20:31:14 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <stdlib.h>
#include<string.h>

int main()
{
int i,l,count=0;
char str[100];
printf("Enter a string\n");
scanf("%[^\n]", str);
l=strlen(str);
printf("%d\n", l);
for(i=0;i<=l/2;i++)
{
if(str[i]==str[l-i])
count++;
else
continue;
}
printf("%d", count);

if(count==l/2)
printf("the string is pallindrome");
else
printf("\nNOt pallindrome");

return 0;
}

最佳答案

如果我将此行添加到您的 for 循环中:

printf("str[i]=%.2X\tstr[l-i]=%.2X\n", str[i], str[l-i]);

输入racecar(这是一个回文),我看到了输出:

str[i]=72       str[l-i]=00
str[i]=61 str[l-i]=72
str[i]=63 str[l-i]=61
str[i]=65 str[l-i]=63

您正在将空终止符与字符串的实际内容进行比较,这是不正确的。另外,继续将结束循环的当前迭代,然后更新i继续循环,一旦遇到比较失败。您想要在那里休息。更好的是,将代码放在自己的函数中,以便您可以在失败时返回,如下所示:

int palin(char *a, size_t len)
{
char *p = &a[0];
char *q = &a[len - 1];
while(p < q)
{
if(*p != *q) return 0;
p++;
q--;
}
return 1;
}

关于无法从中找到是否是回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52226350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com