c语言计算判断回文数

//判断是否为回文数
//思想:将数的每个位分别存入数组中,一个for循环分别比较两边的数

#include<stdio.h> 
#include<math.h>
bool isPalindrome(int x);
int main()
{
	int m;
	scanf("%d",&m);
	printf("%d",isPalindrome(m)); 
}

bool isPalindrome(int x){
	int a[10];//将数的每一位存入数组
	int n=0;//数的位数 
	int flag=0;
	int h;
	if(x<0)//当为负数是,直接返回false 
	{
		return false;
	} 
	for(int i=0;i>=0;i++)//求数的位数
	{
		h=x/(pow(10,i));
		if(h!=0) 
		n=i;
		else
		break;
	}
	n=n+1;
	for(int j=0;j<n;j++)//将数的每一位存入数组
	{
		if(j==0)    //存个位
		a[j]=x%(int)(pow(10,j+1));
		else 		//存个位以上的位数
		{
			h=x%(int)(pow(10,j+1));
			a[j]=h/(int)(pow(10,j));
		}
		
	}
	for(int t=0;t<n/2;t++)//一个for循环分别比较两边的数
	{
		if(a[t]!=a[n-t-1])
		{
			flag=1;
			break;
		}
	}
	if(flag==1)
	return false;
	else
	return true;
}

有待提升的地方:如何更加高效的求一个整数的位数
易出错的地方:
(1)bool值的输出,就用%d
(2)for循环的结束条件、以及边界值是否可取

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值