C语言检测是否为水仙花数

C语言检测是否为水仙花数

从键盘输入一个三位整数,判定是否为“水仙花数”。
水仙花数:是指这样一个三位数,它的各位数字的立方和等于他本身。
若为水仙花数则输出”Yes!“反之则输出“No!”

代码展示

#include <stdio.h>

int main()
{
	int a,b,c,t,k;
	printf("请您输入一个三位数:\n");
	scanf("%d",&k);
	a=k/100;
	t=k/10;
	b=t%10;
	c=k%10;
	if(k==a*a*a+b*b*b+c*c*c)
	{
		printf("Yes!");
	}else
	{
		printf("No!");
	}
	return 0;
}

做的一个小题目,希望能帮到和我一样的初学者(或者说是啥也不懂的小白白——)
ps:
三位数的叫水仙花数,其他位数的也有其他的名字哦:
一位自幂数:独身数
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 好的,这是一段查找水仙花数C语言代码: ``` #include<stdio.h> #include<math.h> int main() { int num, originalNum, rem, n = 0, result = 0; printf("Enter a three-digit integer: "); scanf("%d", &num); originalNum = num; while (originalNum != 0) { originalNum /= 10; ++n; } originalNum = num; while (originalNum != 0) { rem = originalNum%10; result += pow(rem, n); originalNum /= 10; } if(result == num) printf("%d is an Armstrong number.", num); else printf("%d is not an Armstrong number.", num); return 0; } ``` 这段代码实现了对一个三位整数检测,如果它是水仙花数,则会输出"XXX is an Armstrong number.";如果不是,则输出"XXX is not an Armstrong number."。 ### 回答2: 水仙花数是指一个数等于其各位数字立方和。例如,153是一个水仙花数,因为1³ + 5³ + 3³ = 153。 下面是用C语言编写的求解水仙花数的程序: ```c #include <stdio.h> int main() { int num, originalNum, remainder, result = 0; printf("请输入一个整数:"); scanf("%d", &num); originalNum = num; while (originalNum != 0) { remainder = originalNum % 10; result += remainder * remainder * remainder; originalNum /= 10; } if (result == num) { printf("%d是水仙花数。\n", num); } else { printf("%d不是水仙花数。\n", num); } return 0; } ``` 这段代码首先会向用户输入一个整数作为待检验的数。然后,将输入的数保存到`num`和`originalNum`变量中。 接下来,使用一个循环,通过对`originalNum`不断进行除以10的操作,将其各位数字立方和累加至`result`变量中。 最后,通过判断`result`是否等于初始的`num`来决定输入的数是否水仙花数,并输出结果。 请注意,在运行程序时,需要包含`stdio.h`头文件,并使用`gcc`或其他C语言编译器来编译和执行程序。 ### 回答3: 水仙花数是指一个三位数,其各个位上数字立方和等于该数本身。以C语言编写一段代码来生成水仙花数的例子如下: ```c #include <stdio.h> int main() { int num, temp, digit, sum; printf("水仙花数为:\n"); for(num = 100; num <= 999; num++) { temp = num; sum = 0; while(temp != 0) { digit = temp % 10; // 取个位数 sum += digit * digit * digit; // 求和 temp /= 10; // 去掉个位数 } if(sum == num) { // 判断是否水仙花数 printf("%d\n", num); } } return 0; } ``` 上述代码首先定义了变量`num`用于表示三位数的范围,`temp`用于保存当前数字的拷贝,在检查完该数字后将其重新赋值给`num`变量。`digit`用于保存每个位上的数字,`sum`用于保存位数立方和。 代码使用`for`循环遍历三位数范围内的数字,对每个数字进行水仙花数的检查。在循环体内部,先将当前数字拷贝至`temp`,并将`sum`初始化为`0`。 之后,通过`while`循环逐位取数字,将每个位数的立方值相加存储在`sum`中,并通过除以`10`操作舍弃掉已经取过的最后一位数。当`temp`等于`0`时,说明所有位数都已取完,退出循环。 最后,检查`sum`是否等于原始数字`num`,如果相等,则打印该数字,即为一个水仙花数

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桂花香04

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值