返回信息流例如:245不是回文,14741是回文 即倒序看和顺序看一样
现在的问题是当val2 = 12时,也打印是回文,不知道哪里错了?
代码如下:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define TRUE 1
#define FALSE 0
/******************************************************************************************
*函数名称:int palindorme(const char *str)
*函数功能:判断一个字符串是不是回文
*入口参数:str, 字符串指针
*返 回 值:
*备 注:无
*******************************************************************************************/
int palindrome(char *str)
{
//int flag = 1;
char *str_end = str + strlen(str) -1;
while(TRUE){
/*去掉头尾非字母字符*/
while(!isalpha(*str))
str++;
while(!isalpha(*str_end))
str_end--;
if(str_end <= str)
return TRUE;
if(tolower(*str) != tolower(*str_end))
return FALSE;
str++;
str_end--;
}
}
/******************************************************************************************
*函数名称:int palindorme(const char *str)
*函数功能:判断一个字符串是不是回文
*入口参数:str, 字符串指针
*返 回 值:
*备 注:无
*******************************************************************************************/
int number_palindrome(int value)
{
char buf[50];
sprintf(buf, "%d", value);
return palindrome(buf);
}
int main()
{
#if 0
char s[] = "thrht";
char *s1 = "hello";
if(palindrome(s))
printf("palindrome!\n");
else
printf("not palindrome!\n");
if(palindrome(s1))
printf("palindrome!\n");
else
printf("not palindrome!\n");
#else
int val1 = 34743;
int val2 = 12;
if(number_palindrome(val1))
printf("number palindrome!\n");
else
printf("not number palindrome!\n");
if(number_palindrome(val2))
printf("number palindrome!\n");
else
printf("not number palindrome!\n");
#endif
return 0;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #20347同步于 2009/3/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
《C和指针》课后题15.6 判断整形变量是否是回文
michealyao
2009/3/17镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复