概述
之前写过逆排序的数组实现,对于经典的回文问题却还没有深入研究过。今天抽空看了下,总结了两种比较常用的回文法。
一种是字符串(当然也可以叫数组法),此方法可以用来判断字符串输入以及INT类型的输入
另一种是数字输入,因为追求简便性所以此方法只能判断回文数,不能判断回文字符串。要想都判断也很简单,将变量类型调整即可实现
代码以及讲解如下:
/***判断回文数***/
//情况1.利用字符串判断回文
//实现方法:利用字符串指针从头尾分别判断
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <ctype.h>
//typedef char Pre_; 方便调试回文时更改类型
bool Judge_char(const char *p); //声明一个布尔型变量的函数原型
int main(int argc, char *argv[])
{
printf("Please enter the chars to judge:n");
bool re_value = 0; //初始化逻辑变量
char *k;
scanf("%s", k); //声明一个字符串指针,并将STDIN传入
re_value = Judge_char(k);
if (re_value){
printf("This charset is Palindrom");
}
else {
printf("this charset is not Palindrom"); //判断命题真假并输出结果
}
return 0;
}
bool Judge_char(const char *p)
{
register int i = 0; //计数变量初始化
int len = strlen(p); //使用STRLEN函数取字符串数组的字符位数
//注意此处STRLEN与SIZEOF的使用方法区别,后者返回参数的所占空间大小并包含空字符'