用c语言计算所有水仙花数的和
时间: 2024-05-04 13:22:15 浏览: 8
水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如153就是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。以下是用c语言计算所有水仙花数的和的代码:
```c
#include <stdio.h>
int main()
{
int i, num, sum = 0;
for(i = 100; i <= 999; i++)
{
int digit1 = i / 100;
int digit2 = (i / 10) % 10;
int digit3 = i % 10;
if(i == digit1*digit1*digit1 + digit2*digit2*digit2 + digit3*digit3*digit3)
{
sum += i;
}
}
printf("所有水仙花数的和为:%d", sum);
return 0;
}
```
代码中首先使用for循环遍历所有三位数,然后分别取出每一位数字,判断该数是否为水仙花数,如果是,则将其加入到sum中。最后输出sum即可。
相关问题
用c语言计算水仙花数
水仙花数是指一个n位数(n>=3),它的每个位上的数字的n次幂之和等于它本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
以下是用C语言计算水仙花数的代码:
```c
#include <stdio.h>
#include <math.h>
int main()
{
int n, i, num, sum;
printf("请输入一个正整数n:");
scanf("%d", &n);
printf("所有的%d位水仙花数为:\n", n);
for (i = pow(10, n-1); i < pow(10, n); i++)
{
num = i;
sum = 0;
while (num > 0)
{
sum += pow(num % 10, n);
num /= 10;
}
if (sum == i)
{
printf("%d\n", i);
}
}
return 0;
}
```
代码解释:
1. 首先,我们需要输入一个正整数n,表示要计算n位的水仙花数。
2. 然后,我们使用for循环遍历所有n位数,从10^(n-1)到10^n-1。
3. 在循环中,我们将当前数字num赋值为i,然后使用while循环计算num的每一位数字的n次幂之和sum。
4. 如果sum等于i,则说明i是一个水仙花数,我们将其输出即可。
c语言打印所有水仙花数
以下是两种C语言打印所有水仙花数的例子:
1. 使用for循环和if语句判断是否满足水仙花数的特点
```c
#include<stdio.h>
int main() {
int bai, shi, ge;
int i, j=0;
printf("水仙花数有:\n");
for (i = 100;i < 1000;i++) {
bai = i / 100; //取百位数字
shi = (i % 100) / 10;//取十位数字
ge = i % 10; //取个位数字
if (i == bai * bai * bai + shi * shi * shi + ge * ge * ge)//判断是否满足水仙花数的特点
{
printf(" %d ", i);
j++;
if (j % 5 == 0)//每五个数字一行
printf("\n");
}
}
return 0;
}
```
2. 使用for循环和数学库中的pow函数计算立方和
```c
#include<stdio.h>
#include<math.h>
int main() {
int i,sum;
printf("水仙花数有:");
for(i=100;i<1000;i++) {
sum=(i/100)*(i/100)*(i/100)+(i%100/10)*(i%100/10)*(i%100/10)+(i%100%10)*(i%100%10)*(i%100%10);
if(i==sum) {
printf("%d\n",sum);
}
}
return 0;
}
```