C++ 中100到1000之间的水仙花数

gezihanqqz 2008-11-18 10:42:05
#include <iostream.h>
void main()
{
int i,j,k;
for(int n=100;n<=999;n++)
{ i=n/100;
j=(n-i*100)/10;
k=n-(i/10)*10;
if (i*i*i+j*j*j+k*k*k==n)
cout<<n<<"是水仙花数"<<endl;
}
}
没错误就是没法运行,高手帮我看看
...全文
3217 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
再次启程 2008-11-22
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
int main()
{int a,b,c,i;
for(i=100;i<=999;i++)
{a=i/100;
b=(i-100*a)/10;
c=i-100*a-10*b;
if(i==a*a*a+b*b*b+c*c*c)
cout<<i<<"是水仙花数"<<endl;
else continue;}
cout<<endl;
return 0;
}//在C++6.0版本上运行。
chenShuyuNO1 2008-11-22
  • 打赏
  • 举报
回复
其余部分你应该写得出来
这是
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
{
x=100*i+10*j+k
y=cube(i)+cube(j)+cube(k)
if(x==y)
cout<<x;
}
这个就可以了哈
gezihanqqz 2008-11-21
  • 打赏
  • 举报
回复
知道了,谢谢了啊~~~
chinaxboy 2008-11-20
  • 打赏
  • 举报
回复
我是新手 哈哈
雪鹰翔天 2008-11-19
  • 打赏
  • 举报
回复
取位有很多取法呢,只是不知道哪个是效率最高的....


i = n/100;

j = ((int)(n/10))%10;

k = n % 10;
zyh1290163_com 2008-11-19
  • 打赏
  • 举报
回复
#include <iostream.h>
void main()
{
int i,j,k;
//int t;
for(int n=100;n <=999;n++)
{
i=n/100;
j=(n-i*100)/10;
k=n%10;
if (i*i*i+j*j*j+k*k*k==n)
cout <<n <<"是水仙花数" <<endl;
}
}
Billie798814704 2008-11-19
  • 打赏
  • 举报
回复
按你的写法个位错了,要改为k=n-(n/10)*10;
另一种求i,j,k。
i=n/100;
j=(n%100)/10或者=(n/10)/10;
k=(n%100)%10;
cuiboand1 2008-11-19
  • 打赏
  • 举报
回复
LZ的个位数求法有问题,其中i为小于10的整数,那么i/10应该等于0哦;改下吧。
k=n-(i/10)*10;
改成:k=(n-i*100)%10;
就ok了吧。
candice_1984 2008-11-19
  • 打赏
  • 举报
回复
也可以这么写
#include <iostream.h>
void main()
{
int i,j,k;
for(int n=100;n <=999;n++)
{
i=n/100;//分解出百位
j=n/10%10;//分解出十位
k=n%10;//分解出个位
if(n==i*i*i+j*j*j+k*k*k)
cout <<n<<"是水仙花数" <<endl;
}
}
BaihowFF 2008-11-18
  • 打赏
  • 举报
回复
啊哦...代码没ctrl+c全...不差括号啊...不好意思...^_^
BaihowFF 2008-11-18
  • 打赏
  • 举报
回复

#include <iostream.h>
int main(int argc,char* argv[])
{

int i,j,k;
for(int n=100;n <=999;n++)
{
i=n/100;
j=(n-i*100)/10;
k=n-i*100-j*10; // 这里这样算
if (i*i*i+j*j*j+k*k*k==n)
cout <<n <<"是水仙花数" <<endl;
}// 崩溃..差反括号
return 0;
}

BaihowFF 2008-11-18
  • 打赏
  • 举报
回复

#include <iostream.h>
int main(int argc,char* argv[])
{

int i,j,k;
for(int n=100;n <=999;n++)
{
i=n/100;
j=(n-i*100)/10;
k=n-i*100-j*10; //这里应该这样计算
if (i*i*i+j*j*j+k*k*k==n)
cout <<n <<"ÊÇË®ÏÉ»¨Êý" <<endl;
}// 崩溃...你竟然差括号
return 0;
}
kuguakugua 2008-11-18
  • 打赏
  • 举报
回复
水仙花数
  水仙花数是指一个n(>=3)位数字的数,它等于每个数字的n次幂之和。
  在1000以内的水仙花数共有4个,分别为:153、370、371、407
  四位的水仙花数1634,8208,9474
  以下为在和种编程语言中实现求取水仙花数的方法。
  ( 例如:1^3 + 5^3 + 3^3 = 153 )

参考:
http://baike.baidu.com/view/152077.htm
kuguakugua 2008-11-18
  • 打赏
  • 举报
回复
k=n-i*100 - j * 10; //个位数的值取错了,即k的值等于n减去百位位上的数字×100再减去十位上的数字×10

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧