C语言编写函数,判断一个字符串是否是回文。若是回文函数返回值为1,否则返回

编写函数,判断一个字符串是否是回文。若是回文函数返回值为1,否则返回值为0。回文是顺读和倒读都一样的字符串。
要求:在主函数中完成:输入要判断的字符串,调用函数,输出“yes”或“no”。

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

#define IS_PALINDROME 1
#define IS_NOT_PALINDROME 0
#define STR_YES "yes"
#define STR_NO "no"
#define MAX_SIZE 80

int isPalindrome(char str[]);

int main()
{
char str[MAX_SIZE + 1];
printf("请输入一个字符串:\n");

/* 获取用户输入的字符串 */
gets(str);

/* 判断是否回文并输出相应信息 */
if (isPalindrome(str) == IS_PALINDROME)
{
printf(STR_YES);
}
else
{
printf(STR_NO);
}

return 0;
}

/*
判断给定字符串是否为回文
str——待判断的字符串
如果str是回文,返回1;否则返回0
*/
int isPalindrome(char str[])
{
int length = 0; /* 字符串长度 */
int i = 0;

/*
如果字符串长度为0或负值,则认为它不是回文;
否则,将首尾对应的字符进行比较:
——如果有任意一组对应的字符不相等,则认为它不是回文;
——否则认为是回文.
*/
if ((length = strlen(str)) <= 0)
{
return IS_NOT_PALINDROME;
}
else
{
for (i = 0; i < length / 2; i++)
{
if (str[i] != str[length - 1 - i])
{
return IS_NOT_PALINDROME;
}
}
}

return IS_PALINDROME;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-05-29
#include <stdio.h>
#include <string.h>
main()

{int s(char a[20]);
char a[20];
int t;
gets(a);
t=s(a);
if(t==1)
printf("yes");
if(t==0)
printf("no");
}
int s(char a[20])
{
int m,n,i;
n=strlen(a);
for (i=0;i<n/2;i++)
if(a[i]!=a[n-i-1])
return 0;
return 1;
}
第2个回答  2019-09-11
先看是几位数。假设是4位
int
a,a1,a2,a3
输入回文数
scanf("%d",a);
a1=a%10;
a2=a/10%10;
a3=a/100%10
a4=a/1000
if(a1==a4&&a2==a3)
{
return
1;
}
else
{
return
2;
}
差不多就是这样,
第3个回答  2008-05-21
#include <stdio.h>
main()
{
char str[100];
int i,j,leap;
gets(str);
if (strlen(str)<=0)
printf("not\n");
else
for (i=0,j=strlen(str)-1;i<strlen(str)/2;i++,j--)
{if (str[i]!=str[j])
leap=0;
break;
}
if (leap==0) printf("no\n");
else
printf("yes\n");
}
第4个回答  2008-05-30
int ishuiwen(char *p)
{
char *q=p;
while(*q!='\0')
q++;q--;
while(p<q)
if(*p==*q)
{p++;q--;}
else return 0;
return 1;
}
main()
{
int i,ishuiwen();
char a[100];
gets(a);
i=ishuiwen(a);
if(i==1)
printf("Yes!");
else printf("No!");
}这是我前几天做出来的 一定对的
相似回答