请给我一个打印水仙花数的程序用C语言
时间: 2023-09-07 15:04:40 浏览: 148
### 回答1:
以下是用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;
}
```
解释:用户输入一个三位数,程序通过循环计算出该数各位数字的立方和,然后与原数比较,若相等则输出该数为水仙花数,否则输出不是水仙花数。
### 回答2:
下面是一个用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是水仙花数", num);
} else {
printf("%d不是水仙花数", num);
}
return 0;
}
```
这个程序首先要求用户输入一个整数,然后通过循环将该整数的每一位数字的立方累加到 result 变量中。最后,程序通过比较 result 和原始输入的整数 num 判断是否是水仙花数,并进行相应的打印输出。
### 回答3:
当用户输入一个正整数n时,下面的C语言程序可以打印出所有小于n的水仙花数。
```c
#include <stdio.h>
#include <math.h>
int isArmstrong(int num) {
int original = num;
int sum = 0;
int digits = 0;
// 计算数字位数
while (num != 0) {
num /= 10;
digits++;
}
num = original;
// 计算每位数字的立方和
while (num != 0) {
int digit = num % 10;
sum += pow(digit, digits);
num /= 10;
}
// 判断是否为水仙花数
if (sum == original) {
return 1;
} else {
return 0;
}
}
int main() {
int n;
printf("请输入一个正整数n:");
scanf("%d", &n);
printf("小于%d的水仙花数有:\n", n);
for (int i = 0; i < n; i++) {
if (isArmstrong(i)) {
printf("%d ", i);
}
}
return 0;
}
```
这个程序首先定义了一个函数`isArmstrong`来判断一个数是否为水仙花数。它按照水仙花数的定义,计算出每位数字的立方和,并与原始数字进行比较。
在`main`函数中,用户可以输入一个正整数n,然后通过循环遍历所有小于n的数字,如果是水仙花数,则打印出来。
注意,水仙花数是指一个三位数,其各个位上数字的立方和等于该数本身。比如153就是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
阅读全文