水仙花数是指这样一种三位数,各个数位的立方和加起来等于这个数本身,如153=13+53+33,试编制一个程序,验证从键盘上输入的一个数是否为水仙花数。并且求出100~1000里面水仙花的个数,老司机们告诉我,用while语句
#include
using namespace std;
int main()
{
int gw,sw,bw,i=100;
while(i<1000)
{
gw = i % 10; //求个位数
sw = i / 10 % 10; //求十位数
bw = i / 100; //求百位数
if (i == gw * gw * gw + sw * sw * sw + bw * bw * bw) //判断是否是水仙花数
{
cout << i << " ";
}
i++; //自增运算
}
return 0;
}
供参考:
#include <stdio.h>
#include <math.h>
int isNarcissistic(int n)
{
if (n <= 0) return 0;
int p = (int)log10(n) + 1, sum = 0, t, N = n, k;
while (N) {
t = 1; k = p;
while (k--) t *= N % 10;
sum += t;
N /= 10;
}
return sum == n;
}
int main()
{
int n, i, cnt;
scanf("%d", &n);
if (isNarcissistic(n))
printf("Yes\n");
else
printf("No\n");
i = 100; cnt = 0;
while (i < 1000) {
if (isNarcissistic(i)) cnt++;
i++;
}
printf("100-1000间共有水仙花数:%d", cnt);
return 0;
}
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int a,b,c,i,cnt = 0,n;
cin>>n;
a = n/100;
b = n/10%10;
c = n%10;
if (pow(a,3) + pow(b,3) + pow(c,3) == n ) cout<<"YES"<<endl;
a = 0;
b = 0;
c = 0;
for(i = 100;i<=999;i++)
{
a = i/100;
b = i/10%10;
c = i%10;
if( pow(a,3) + pow(b,3) + pow(c,3) == i )
{
cnt++;
}
}
cout<<cnt;
return 0;
}