实验八 题目描述 从键盘上输入任意一个整数(正负数皆可),判断该整数的绝对值是否为回文数。

实验八

题目描述

从键盘上输入任意一个整数(正负数皆可),判断该整数的绝对值是否为回文数。[提示:取数的绝对值,然后使用用循环语句从该绝对值的末位开始至最高位,重新构造一个数,判断该数与原绝对值是否相等。]

方法1 数字法

对于一个数逐个取出个位数,在下次循环时一次乘10实现向左移动一位,然后当变量为0结束时。

举个例子:

input: a = 323
variable: n = 323  y = 0
loop(0):  t = n % 10 = 3
					y = y * 10 = 0
				  y = y + t = 3
          n = n / 10 = 32
loop(1):  t = n % 10 = 2
					y = y * 10 = 30
					y = y + t = 32
					n = n / 10 = 3
loop(2):  t = n % 10 = 3
					y = y * 10 = 320
					y = y + t = 323
					n = 0
					end

核心代码

while(n!=0)
{
	t = n % 10;
	y = y * 10;
	y = y + t;
	n = n/ 10;
}

推荐简便一点:

while( n!=0 )
	{
		y = y * 10 + n % 10;
		n = n / 10;
	}

完整代码:

#include <stdio.h>

int main()
{
	int a,x,y,n;
	
	printf("输入一个整数:");
	scanf("%d",&a);

	x = a>=0 ? a : -a;

	n = x;
	y = 0;
	while( n!=0 )
	{
		y = y * 10 + n % 10;
		n = n / 10;
	}
	
	if( x == y )
		printf ("%d的绝对值是回文数!\n",a);
	else
		printf ("%d的绝对值不是回文数!\n",a);
  
  return 0;
}


方法2 字符串法

首尾相互判断两元素是否相等,当元素相等时继续循环,不相等时退出循环

// 核心代码

while (i <= len/2) // 只需要判断到一半位置
	{
		if ( str[i] == str[len-1-i] )     //数组最后一个元素的下标是 len-1
			i++;
		else
		{
			printf ("输入数的绝对值不是回文数.\n");
			return 0; // 直接结束循环
		}
	}

完整代码:

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

int main ()
{
	int x, y, len, i;
	char str[100];
	
	printf ("请输入一个整数:\n");
	scanf ("%d", &x);
	y = abs(x);
	sprintf(str, "%d", y);
	len = strlen(str);

	i = 0;
	while (i <= len/2)
	{
		if ( str[i] == str[len-1-i] )     //数组最后一个元素的下标是 len-1
			i++;
		else
		{
			printf ("输入数的绝对值不是回文数.\n");
			return 0;
		}
	}
	printf ("输入数的绝对值是回文数.\n");
	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值