判断对称数、回文字符串

来源:互联网 发布:开淘宝店铺货源怎么找 编辑:程序博客网 时间:2024/05/21 17:22

一、判断一个数是不是对称数

思路:根据参数构造一个新的数(实现从低位到高位逆转),这个数是将原数的高低位对称交换,例如:123---->321,   12321----->12321。使用while循环实现

        /*data是要实现的函数接收到的参数*/        int temp = data;int new_data = 0;//作为新的data与原来的data比较while(temp)//通过循环一次取出data的低位至高位,并生成new_data{new_data = new_data * 10 + (temp % 10);temp = temp / 10;}

然后实现函数的其他部分:

/**判断一个数是不是对称数(回文数),是的话返回1,不是的话返回0*/#include <stdio.h>int ispalindromenum(int data){int temp = data;int new_data = 0;//作为新的data与原来的data比较while(temp)//通过循环一次取出data的低位至高位,并生成new_data{new_data = new_data * 10 + (temp % 10);temp = temp / 10;}if(data == new_data){return 1;}return 0;}void main(){int n1 = 123321;int n2 = 67876;printf("%d is :\t%d\n", n1, ispalindromenum(n1));printf("%d is :\t%d\n", n2, ispalindromenum(n2));getchar();}

二、判断字符串是不是回文(对称)

采用逐个字符比较的方法。当然,上面的对于对称数的判断也可以先将该数转化成字符串,然后采用下面的方法比较,不过好像有点绕。。。

//判断是不是回文,是返回1,不是返回0,出错返回-1#include <stdio.h>#include <string.h>int palindrome(char *p){while(p != NULL){int length = 0;//用于记录字符长度int i = 0;length = strlen(p);for( ; i < ((length + 1) / 2); i++){if(*(p + i) != *(p + length -1 - i)){//出现不相等的字符return 0;}}return 1; //遍历字符串的一半后没有发现不同的字符,说明字符串是回文}return -1;//字符串指针为空}



0 0