最近在看《C和指针》,做了一些课后习题,记录下。
题目出处:9.14编程练习,第10题
以下是我的解答:
/*判断一个字符串是否为回文数,判断时忽略所有的非字母字符,并不区分字母的大小写*/
int check( const char *str)
{
char str_del[LEN];
char *p_end = str_del;
char *p_begin = p_end;
while( *str != '\0')
{
if(isalpha(*str))//过滤掉所有非字母字符
*p_end++ = *str;
str++;
}
*p_end = '\0';
p_end--;
for(; p_begin < p_end; p_begin++, p_end-- )
{
if( (*p_begin != *p_end) && ( abs( *p_begin - *p_end ) != 32) )
return 0;
}
return 1;
}
以下是测试程序:
#include<stdio.h>
#define LEN 50
int main(void)
{
int dollars( char *dest, const char *str);
char str[LEN];
char str2[LEN];
while(1){
printf("\nplease input a string:");
gets(str);
dollars(str2,str);
printf("the num is: %s\n",str2);
}
return 0;
}
以下是程序运行的结果: