69,369
社区成员
发帖
与我相关
我的任务
分享
char fun(char a[n]) // a[n]中的n不能是变量
{
int i,j;
int n=0; // n既然是通过参数传递进来的,为什么在这里又重新定义,这会覆盖传进来的n
char a[n]={'0'}; // n不能是变量
printf("n=%d",n);
scanf("%d",&n);
scanf("%s",a);
for(i=0;i<=n;i++) // 两个循环的含义要搞清楚。像这种写法除非所有的字符都是一样的,否则就不是回文了,所以肯定是错误的。
for(j=n;j>=0;j--)
if(a[i]==a[j]) // 比较的逻辑不正确。此处只要对称的两个位置相等了,你就判断其为回文,这不正确。
return(1); // 正确的逻辑是,所有的对称的位置上的字符都必须相等,方可判定其为回文。
else
return(0);
}
#include <stdio.h>
#include <string.h>
int fun(char* str)
{
int i, k, length;
length = strlen(str);
k = length / 2;
for(i = 0; i < k; ++i)
{
if(*(str + i) == *(str + length - i - 1))
{
continue;
}
else
{
return 0;
}
}
return 1;
}
int main(int argc, char* argv[])
{
char* str = "1234567890987654321";
if(fun(str))
{
printf("YES\n");
}
else
{
printf("No\n");
}
return 0;
}