详细判断回文字符串和回文数算法的c语言代码!
一.判断一个字符串是否为回文字符串
#包含
#包含
#包括//strlen
#定义是1
#define NO 0
#define uchar unsigned char
#定义uint unsigned int
#define ushort unsigned short
#定义ulong unsigned long
#define u8 uchar
#define u16 ushort
#定义u32 ulong
u8ispalindromestring(u8*pstr );
输入主(语音) )。
{
u8 array[]='abcdefgfedcba ';
u8 value=0;
value=ispalindromestring;
if (值)
{
printf (是回文字符串! n ';
}
else
{
printf '不是回文字符串! n ';
}
返回0;
}
//想法:
//)1)字符串的开头和结尾分别用2个指针指示
//)2)比较两指针指向的字符是否相同
//)3)如果相同,则头指针向后移动,尾指针向前移动
//)4)不同时返回NO,表示不是回文字符串
//(5)重复2.3.4
//6 )如果头尾指针指向的位置相邻或相同,则返回YES,表示是回文字符串
u8ispalindromestring(u8*pstr ) )。
{
u8num=strlen ((常数char * ) pStr );
u8 *pHead=pStr; //指向字符串的开头
u8 *pTail=pStr num-1;
for (; pHead=pTail; pHead,pTail-- )
{
if(*phead!=*pTail )
{
返回否;
}
(else if (phead==PTA il|| phead1==PTA il ) ) ) ) ) ) ) )
{
返回是;
}
}
}
二、判断一个数是否为回文数
#包含
#包含
#包括//strlen
#定义是1
#define NO 0
#define uchar unsigned char
#定义uint unsigned int
#define ushort unsigned short
#定义ulong unsigned long
#define u8 uchar
#define u16 ushort
#定义u32 ulong
u8ispalindromenumber(u32num;
输入主(语音) )。
{
u32 num=1221;
u8 value=0;
value=ispalindromenumber(num;
if (值)
{
printf (是回文数! n ';
}
else
{
printf (不是回文数! n ';
}
返回0;
}
/*
分析:因为回文数从上往下看的数值和从下往上看的数值相等。
因此,能够将数值从下位分割为上位,并对其进行再组合,判断新组合
的数值是否与原数值相等,即可判断回文数!
*/
u8ispalindromenumber(u32num )。
{
u32 temp=num;
u32 sum=0;
wile(num )。
{
sum=sum*10 num; //num从低到高依次取出,重新组合为整数
num /=10; //num拆下一位
}
if(sum==temp ) )。
{
返回是;
}
else
{
返回否;
}
}