C语言求所有水仙花数以及判断回文数

水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153

这样的问题就很简单,我们可以先把这个三位数i如以下代码拆分:

​
​//int a,b,c,i;
//scanf("%d",&i);
a=i/100;//百位数字
b=(i%100)/10;//十位数字
c=(i%10)%10;//个位数字

​

​

拆分后,根据水仙花数的定义,判a,b,c的立方之和是否等于i,再做遍历判断并打印每一个水仙花数,完整代码如下:

​
#include<stdio.h>
 
int main()
{
 int a,b,c;
 
 printf("水仙花数如下:"); 
 for(int i = 100;i<999;i++)
{
 a=i/100;
 b=(i%100)/10;
 c=(i%10)%10;
if(a*a*a + b*b*b + c*c*c == i)
{
printf("%d%d%d\t",a,b,c);
}

}
printf("\n");
return 0;
}

​

当然也可以不拆分,用数组存入每一位(遍历可能有些麻烦)这里就先不演示了。

接下来是回文数:

若一个五位数个位与万位相同,十位与千位相同,那么他就是回文数,如12321;

接下来是判断回文数,思路与水仙花数是一样的,先对五位数n进行拆分,如下:

a = n/10000;
b = n%10000/1000;
c = n%1000/100;
d = n%100/10;
e = n%10;

然后判断a是否等与e,b是否等于d,完整代码如下:

#include<stdio.h>

int main()
{
	
	int a,b,c,d,e,i,n;
	printf("输入一个五位数:"); 
	scanf("%d",&n);
	a = n/10000;
	b = n%10000/1000;
	c = n%1000/100;
	d = n%100/10;
	e = n%10;
	if(a == e && b == d) 
	{
		printf("是回文数\n"); 
	}
	else
	{
		printf("不是回文数\n"); 
	}
    return 0;
}

同样,我们也可以把每位存入数组,如下:

	char num[10];
	scanf("%s",&num);
	for (int i = 0; i < 5; i++) 
	{
		printf("%c", num[i]);
	}
	
	if((num[0] == num[4]) && (num[1] == num[3]))
	{
		printf("是回文数\n");
	}
	else
	{
		printf("不是回文数\n");
	}

好了今天就到这里,希望大家支持。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值