C语言实现判断输入的数字是否是回文

从键盘输入一个正整数(位数小于或等于10),判断其是否为回文数(回文数是将自然数n 的各位数字反向排列得到自然数n1,若n1与n相等,则称n为回文数,例如:12321)

程序代码如下:

#include <stdio.h>
#include <math.h>

// 定义函数getLength,计算正整数 num 的位数
int getLength(long int num){
	 
	int found,length;
	found = 0;
	length = 10; //设置正整数的位数小于或等于10
	if(num==0){
	  return 1;
	}
	while(found == 0){
		if(num/(int)pow(10,length-1)>0){  // 库函数POW(10,length-1) 的功能是计算10 的(length-1) 次幂
			found = 1;
		}else{
			length -= 1;
		}
	}
	return (length); // 返回正整数num 的位数

}

int isHuiWenShu(long int num){ // 定义函数 是否为回文,判断正整数num 是否是回文数

	long int n; // 定义变量n 保存从键盘输入的正整数
	int left; // 定义 left 保存正整数最左边的数字
	int right;// 定义变量right 保存正整数最右边的数字
	int i; // 定义变量 i,保存正整数的位数
	int flag;// 定义变量 flag 保存是否是回文数的标志。若不是回文数,则flag=1;否则flag=0
	i = getLength(num); // 调用函数getLength 将正整数num 的位数赋予变量 i
	n = num;
	flag = 0;
	while(i>1&&flag==0){
		left = n/(int)pow(10,i-1);//将正整数 n 当前最左边的数字赋予变量 left	
		right = n%10; // 将正整数n 当前最右边的数 赋予变量 right
		n = n %(int)pow(10,i-1)/10;
		i -=2;
		if(left!=right){ // 若正整数n 当前最左边和最右边的数字不相等,则不是回文数,即变量flag 赋值 1
			flag=1;
		}
	}
	if(flag == 0){
		return 1;//若不是回文 则返回1
	}else{
		return 0;//若是回文 则返回0
	}
}

int main(){
	long int num;
	scanf("%ld",&num);
	if(isHuiWenShu(num)){
		printf("%d 是回文数\n",num);
	}else{
		printf("%d 不是回文数\n",num);
	}

	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值