函数习题:判断一个数是否是回文数。——[C语言]入门基础编程 1039

函数习题:判断一个数是否是回文数。——[C语言]入门基础编程 1039,第1张

编写一个带整数参数的函数,其功能是返回一个数的相反数,如整数9831,函数返回值为1389。从键盘输入一个整数,调用该函数,判断这个数是否是回文数(所谓回文数,是指从左向右读和从右向左读是一样的数),输出判断结果。

Input

输入仅一行,输入一个整数。

Output

输出仅一行,如果是回文数,输出yes,否则输出no。

Sample Input

1231

Sample Output

no

问题分析

本题中判断回文数,核心是判断每一个数字是否与前面的数字对应。
如果要验证前后是否一一对应,可以想到i两个思路:整形判断或者数组判断,在此使用整形判断;如果用数组的话难以判断数字是否对称,过程相对比较复杂。

核心思路
  1. 数字1一定是回文数
  2. 10、100、200之类的整数一定不是回文数
  3. 判断其他数字时,数字的每一位与1000、100、10做积,再不断相加等于自身,符合这样条件的数是回文数

难点就在判断第3类情况的时候:

	else//其他情况
	{
		int i = 0;
		int n = num;
		int sum = 0;
		for (i = n; i > 0; i /= 10)
		{
			sum = sum * 10 + i % 10;
		}
		if (sum == num)
		{
			return 1;
		}
		else
		{
			return 0;
		}
	}

for循环中,要多次对传参传入的数字进行取模,不断相加,最后再判断。

代码实现
#include 

int huiwen(int num);

int main()
{
	int num = 0;
	scanf("%d", &num);
	int  i = huiwen(num);
	if (i == 1)
	{
		printf("yes");
	}
	else if (i == 0)
	{
		printf("no");
	}
	return 0;
}

int huiwen(int num)
{
	if (num == 0)//0一定是回文数
	{
		return 1;
	}
	else if (num % 10 == 0)//10 100 1000一定不是回文数
	{
		return 0;
	}
	else//其他情况
	{
		int i = 0;
		int n = num;
		int sum = 0;
		for (i = n; i > 0; i /= 10)
		{
			sum = sum * 10 + i % 10;
		}
		if (sum == num)
		{
			return 1;
		}
		else
		{
			return 0;
		}
	}
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1499299.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-25
下一篇 2022-06-25

发表评论

登录后才能评论

评论列表(0条)

保存