栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言 判断回文数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言 判断回文数

1、题目

        写一个函数,判断一个整数是否为回文数,是返回1,不是返回0。

2、什么是回文数?

        如果一个整数从左来读和从右来读都一样,就称它为回文数,如123321,12321,456654,45654.

3、思路

首先输入一个整数,然后判断他是几位数,然后判断是否小于等于0,或者最低为是否等于0,如果满足上述条件,返回-1,不满足则执行下面操作。

如果是奇数,以12321为例,让它个位与万位   十位与千位进行比较,如果均相等,返回1,否则返回-1

如果是偶数,以123321为例,让它个位与十万位   十位与万位进行比较,百位与千位,如果均相等,返回1,否则返回-1

4、全部代码如下:

#include 
#include 
int number_of_palindromes(int target,int n);
int main() {
	int num,cpy,cnt = 1;
	printf("Please input a number:");
	scanf("%d",&num);
	cpy = num;
	while(cpy/10) {
		cpy /= 10;
		cnt++;
	}	
	printf("%d",number_of_palindromes(num,cnt));
	return 0;
}
 
int number_of_palindromes(int target,int n) {		
	int left = 0,right = 0,m,i;
	if(target <= 0 || target % 10 == 0) {
		return -1;
	}
	else if(n%2) {		//位数为奇数 
		m = n/2+1;
		i = 1;
		while(n > m && i < m) {
			left  = target % ((int)pow(10,n))/ ((int)pow(10,n-1));
			right = target % ((int)pow(10,i))/ ((int)pow(10,i-1));
			if(!(left == right)) {
				return -1;
			}	
			n--;
			i++;
		}
		return 1;
	}
	else if(!(n%2)) {
		m = n/2;	
		i = 0;
		while(n > m && i < m) {
			left  = target % ((int)pow(10,n))/ ((int)pow(10,n-1));
			right = target % ((int)pow(10,i+1))/ ((int)pow(10,i));
			if(!(left == right)) {
				return -1;
			}	
			n--;
			i++;
		}
		return 1;
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/961052.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号