请用C语言写一段代码用于输出所有的水仙花数
时间: 2024-05-15 19:15:10 浏览: 39
```c
#include <stdio.h>
int main() {
int i, j, k;
for (i = 1; i <= 9; i++) {
for (j = 0; j <= 9; j++) {
for (k = 0; k <= 9; k++) {
int num = i * 100 + j * 10 + k;
if (num == i * i * i + j * j * j + k * k * k) {
printf("%d\n", num);
}
}
}
}
return 0;
}
```
注:水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如,153就是一个水仙花数,因为 $1^3 + 5^3 + 3^3 = 153$。
相关问题
用c语言写一段水仙花数
### 回答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`,如果相等,则打印该数字,即为一个水仙花数。
写一个水仙花数c语言代码
### 回答1:
#include <stdio.h>
int main()
{
int n, a, b, c, sum;
printf("输入一个三位数:");
scanf("%d", &n);
a = n / 100;
b = (n - a * 100) / 10;
c = n % 10;
sum = a * a * a + b * b * b + c * c * c;
if (sum == n)
printf("%d 是一个水仙花数。\n", n);
else
printf("%d 不是一个水仙花数。\n", n);
return 0;
}
### 回答2:
水仙花数是指一个三位数,它的各个位上的数字的立方和等于这个数本身。
下面是用C语言写的水仙花数代码:
```c
#include<stdio.h>
#include<math.h>
int main() {
int num, digit, sum;
printf("水仙花数有:\n");
for(num = 100; num < 1000; num++) {
int temp = num;
sum = 0;
while(temp != 0) {
digit = temp % 10;
sum += pow(digit, 3);
temp /= 10;
}
if(sum == num) {
printf("%d ", num);
}
}
printf("\n");
return 0;
}
```
这段代码首先定义了四个变量:num表示当前的三位数,digit表示当前的位数,sum表示当前位数的立方和,temp用于存储待处理的数。然后使用循环遍历所有的三位数。在每次循环中,将temp初始化为当前的三位数,sum初始化为0。然后使用while循环来计算当前数的各个位数的立方和,通过对10求余得到最低位数,使用pow函数计算当前位数的立方,将结果累加到sum中,最后将temp除以10,以便处理下一个位数。最后,如果sum等于当前的三位数,说明找到了一个水仙花数,输出该数。
### 回答3:
水仙花数,又叫Narcissistic数,是指一个n位数 (n≥3),它的每个位上的数字的n次幂之和等于它本身。现在我将给出一个简单的C语言代码来判断一个数是否为水仙花数:
```c
#include <stdio.h>
#include <math.h>
int main() {
int num, originalNum, remainder, result = 0, n = 0;
printf("请输入一个整数:");
scanf("%d", &num);
originalNum = num;
// 计算num的位数
while (originalNum != 0) {
originalNum /= 10;
++n;
}
originalNum = num;
// 计算num的每个位上数字的n次幂的和
while (originalNum != 0) {
remainder = originalNum % 10;
result += pow(remainder, n);
originalNum /= 10;
}
// 判断是否为水仙花数
if (result == num) {
printf("%d 是一个水仙花数。\n", num);
}
else {
printf("%d 不是一个水仙花数。\n", num);
}
return 0;
}
```
这段代码首先获取用户输入的整数,然后通过两个循环计算输入数的位数和每个位上数字的n次幂的和。最后,代码判断和与输入数是否相等,输出相应的结果。