从键盘上输入一个正整数,判断其是否为回文数

本文介绍两种判断回文数的方法:一种是通过逆序比较;另一种是使用数组存储数字并对比首尾元素。提供了完整的C语言代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我们得知道几个知识点:

1、回文数:是指顺读和反读都一样的数(例如:12321,145541)

2、如何将一个数逆序,部分代码如下:

d0{
m=n%10;
s=s*10+m;
}while(m);

当然,我们也可以用数组的方式,这里不需要将它的逆序输出来比较,而是通过用里面的每一个数值进行比较,部分代码如下:

do{
digit[k++]=n%10;
n/=10;
}while(n);

3、判断它是否为回文数的最重要一步,就是比较变化后的数与变化前的数(适用于第一种:即输出逆序法),或者说比较数字左右两端的数(适用于第二种)。

接下来再来写完整代码,法一:

#include<stdio.h>
int f(int n)
{
	int m=0,s=0,n1=n;
	do
	{
		m = n % 10;
		s = s * 10 + m;
		n/=10;
	} while (n);
	if(s==n1)
		return 0;
	else
		return 1;
}
void main()
{
	int n;
	printf("请输入一个正整数\n");
	scanf("%d", &n);
	if(f(n)!=0)
	    printf("此数不是回文数\n");
	else
		printf("此数是回文数\n");
}

思路:(调用函数)先判断逆序值s是否等于n最开始的值,然后返回一个值(0或1),若返回值为0即是回文数,反之。

 法二:

#include<stdio.h>
void main()
{
	int digit[10], k=0,n=0,n1,i;
	scanf("%d", &n);
	n1 = n;
	do {
		digit[k++] = n % 10;
		n/= 10;
	} while (n);
	k--;
	for (i = 0; i < k; i++)
		if (digit[i] != digit[k]) break;
	if (i < k)
		printf("%d不是回文数\n", n1);
	else
		printf("%d是回文数\n", n1);
}

 

思路:(运用数组)将每个数字按顺序保存在数组里,然后比较左右两端的数字若对应的两个数都相等,则是回文数,反之。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值