输出所有的水仙花数的c语言程序
时间: 2024-11-03 08:19:02 浏览: 117
输出所有水仙花数是一个经典的编程练习,水仙花数是指那些每一位数字的立方和等于它本身的三位数,例如153,因为1^3 + 5^3 + 3^3 = 153。下面是一个简单的C语言程序,用于找出并打印所有的水仙花数:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_narcissistic(int num) {
int sum = 0;
int temp = num; // 临时保存数值,方便计算各位数字
while (temp != 0) {
int digit = temp % 10; // 取出最后一位数字
sum += digit * digit * digit; // 累加立方和
temp /= 10; // 移除最后一位
}
return sum == num; // 如果累加的结果等于原数,就是水仙花数
}
int main() {
int start = 100, end = 999; // 设置查找范围
for (int i = start; i <= end; ++i) {
if (is_narcissistic(i)) {
printf("%d ", i); // 打印水仙花数
}
}
return 0;
}
```
相关问题
输出所有水仙花数c语言
### 使用C语言实现输出所有水仙花数的方法
水仙花数是指一个三位数,其各个位上的数字立方之和等于该数本身。以下是通过C语言编写的程序来找出所有的水仙花数。
#### 方法一:基于循环与条件判断
此方法利用`for`循环遍历100到999之间的所有三位数,并分别提取百位、十位和个位的数值,计算它们的立方和并与原始数字比较。如果两者相等,则打印该数字[^3]。
```c
#include<stdio.h>
int main(){
int i, j, n, k;
for(n=100; n<1000; n++){
i = n / 100; // 获取百位
j = n / 10 % 10; // 获取十位
k = n % 10; // 获取个位
if(n == i*i*i + j*j*j + k*k*k){ // 判断是否为水仙花数
printf("%-5d", n);
}
}
printf("\n");
return 0;
}
```
#### 方法二:简化版逻辑处理
另一种方式同样采用三重嵌套结构分解数字,但更注重代码简洁性和可读性。这里直接使用模运算 `%` 和除法 `/` 来分离每位数字,并验证这些数字的三次幂总和是否匹配原数[^4]。
```c
#include<stdio.h>
int main() {
printf("输出水仙花数:\n");
for (int i = 100; i <= 999; i++) { // 遍历所有三位数
int a = i % 10; // 提取个位
int b = (i / 10) % 10; // 提取十位
int c = i / 100; // 提取百位
if (i == a * a * a + b * b * b + c * c * c) {
printf("%d\t", i); // 如果符合条件则输出
}
}
return 0;
}
```
以上两种方法均能有效找到并显示全部的水仙花数。第一种方法较为直观易懂,而第二种方法更加紧凑高效。
#### 运行结果展示
运行上述任一段代码后,将会得到如下输出:
```
输出水仙花数:
153 370 371 407
```
这四个数字即为所求的所有三位水仙花数。
输出所有的水仙花数c语言程序
水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如153=1³+5³+3³,153就是一个水仙花数。现在我们来编写一个输出所有水仙花数的C语言程序。
首先,我们需要循环遍历所有n位数,从100开始到999结束。对于每个数,我们需要计算它每个位上的数字的n次幂之和,并判断是否等于本身。
具体实现代码如下:
```
#include <stdio.h>
#include <math.h>
int main()
{
int n = 3; // 水仙花数的位数
int i, num, sum;
for (num = 100; num <= 999; num++)
{
sum = 0;
for (i = 0; i < n; i++)
{
int digit = num / (int)pow(10, i) % 10;
sum += pow(digit, n);
}
if (sum == num)
{
printf("%d\n", num);
}
}
return 0;
}
```
在循环中,我们首先将当前数的个位、十位、百位上的数字分别计算出来,并逐个求出它们的n次幂。接着将这些n次幂之和赋值给sum,最后判断sum是否等于num,是则输出num。
运行这个程序可以看到,它将所有3位水仙花数(即153、370、371、407)输出了出来。如果想输出更多位数的水仙花数,只需将n的值更改为相应的位数即可。
阅读全文
相关推荐
















