C语言例2-3:从键盘输入一个正整数(位数小于或等于10),判断其是否是回文数

本文介绍了如何使用C语言编写一个程序,通过getLength和isHuiHanShu函数来判断用户输入的正整数是否为回文数,通过计算数字的左右两边对齐后是否相等来确定
摘要由CSDN通过智能技术生成

回文数是将自然数n的各位数字反向排列得到自然数n1,若n1与n相等,则称为回文数,例如12321

//从键盘输入一个正整数(位数小于或等于10),判断其是否是回文数
//回文数是将自然数n的各位数字反向排列得到自然数n1,若n1与n相等,则称为回文数,例如12321
#include<stdio.h>
#include<math.h>
int getLength(long int num)       //定义函数getLength,计算正整数num的位数
{
	int found, length;
	found = 0;
	length = 10;                  //设定正整数num的位数小于或等于10
	if(num == 0)  return 1;
	while(found == 0)
	{
		if(num/(int)pow(10,length-1)>0)  found=1;
		                          //库函数pow(10,length-1)的功能是计算10的(length-1)次幂
		else length-=1;
	}
	return(length);
}
int isHuiHanShu(long int num)     //定义函数isHuiHanShu,判断正整数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)   flag = 1;
		//若正整数n当前最左边和最右边的数字不相等,则是回文数,即标志变量flag赋值1
	}
	if(flag == 0)  return 1;          //若是回文数,则返回1
	else return 0;                    //若不是回文数,则返回0
}
int main(void)                        //主函数
{
	long int num;
	scanf("%d",&num);                //从键盘输入一个正整数保存到变量num
	if(isHuiHanShu(num))
		printf("%d is a 回文数\n",num);        //若是回文数,则屏幕上显示“是回文数”
	else
		printf("%d is not a 回文数\n",num);    //否则,屏幕上显示“不是回文数”
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值