编程判断输入的一个字符串是否是"回文".所谓"回文"字符串就是从左读和从右读都一样的字符串

#include <stdio.h>
#include<string.h>
#include<stdlib.h>
int fun(char a[]);
main()
{
char a[80];
printf("Input a string:\n");
gets(a);
if(fun(a))
{
printf("This string is a plalindrome.\n");
}
else
{
printf("This string is not a plalindrome.\n");
}
}
int fun(char a[])
{
int i,j;
for (i=0,j=(strlen(a)-1);i>j;i++,j--)
{
if (a[i]!=a[j]) return 0;
exit(0);

}
return 1;

}
这个代码哪里错了啊?????

.例如: "abcba"就是一个回文字符串.要求:先输出("Input a string:\n"),输入字符串,然后判断是否回文,最后输出("This string is a plalindrome.\n")或者("This string is not a plalindrome.\n")

第1个回答  2015-05-30
for (i=0,j=(strlen(a)-1); i<j; i++,j--) 应该是i<j追问

不是吧……最初i就小于j啊

追答int fun(char a[])
{
int i,j;
for (i=0,j=(strlen(a)-1);i<j;i++,j--) //i<j是循环成立条件!!
{
if (a[i]!=a[j])  return 0;
//exit(0);  这句要删除!
}
return 1;
}

追问

嗯,对你说的对,可是删了就没法比较回文了啊?

追答

上面的代码,我已经测试过了,可以用

追问

int fun(char a[])您能把这个函数完整的贴一下嘛,谢谢,没太看懂怎么删的

追答#include <stdio.h>
#include<string.h>
int fun(char a[]);
void main()
{
char a[80];
printf("Input a string:\n");
gets(a);
if(fun(a))
{
printf("This string is a plalindrome.\n");
}
else
{
printf("This string is not a plalindrome.\n");
}
}
int fun(char a[])
{
int i,j;
for (i=0,j=(strlen(a)-1);i<j;i++,j--)
{
if (a[i]!=a[j])  return 0;
}
return 1;
}

本回答被提问者采纳
相似回答