C语言编程题:打印出所有的“水仙花数”。所谓的“水仙花数”是指一个三位数,其中各位数字的立方和等于该数本身。
- 提问者网友:轻浮
- 2021-05-04 20:27
- 五星知识达人网友:思契十里
- 2021-05-04 20:32
#include<stdio.h>
void main()
{
int a,b,c,i;
for(i=100;i<1000;i++)
{ a=i/100;
b=(i-a*100)/10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)
printf("%d ",i);
}
}
- 1楼网友:旧脸谱
- 2021-05-04 23:05
我以前写的,求3位数中说有的水仙花数
#include <math.h> int main(void) { int i=100,a,b,c; printf("3位数中的水仙花数为:"); for(;i<=999;i++) { a=i/100; b=(i/10)%10; c=i%10; if(pow(a,3)+pow(b,3)+pow(c,3)==i) printf("%d\t",i); } getchar(); getchar(); return 0; }
- 2楼网友:夜余生
- 2021-05-04 21:44
}
虽然没有编译过,但是应该没有错误的,水仙花数那个三次方打不出,你可以吧那个数连续乘3次,这样就可以啊
- 3楼网友:未来江山和你
- 2021-05-04 21:04
水仙花数是指一个 n 位数 ( n>=3 ),它的每个位上的数字的 n 次幂之和等于它本身. 所以n位数的水仙花数就是将其每一位的n次方相加.看是否等于其本身. 三位的水仙花数共有4个:153,370,371,407;
程序如下:
#include<iostream> using namespace std;
int main() { int bit1,bit2,bit3; for(int i=100;i<1000;++i) { bit1=i/100; //取百位数 bit2=(i/10)%10; //取十位数 bit3=i%10; //取个位数 if(i == bit1*bit1*bit1 + bit2*bit2*bit2 + bit3*bit3*bit3 ) //将各个数的立方相加看是否等于其本身. { cout<<i<<endl; } } return 0; }
附图: