| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 728 人关注过本帖
标题:请问这个水仙花数的程序错在哪里?
只看楼主 加入收藏
zhujiancom
Rank: 1
来 自:江苏,南京
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-5-2
结帖率:0
收藏
已结贴  问题点数:10 回复次数:5 
请问这个水仙花数的程序错在哪里?
#include<stdio.h>

int main()
{
  int i;
  int j;
  int m;
  int temp;

  for(int n = 100;n < 1000;n++)
 {
    i = n/100;
    j = (n % 100)/10;
    m = n % 10;
   
    temp = i*i + j*j + m*m;
    if(temp == n)
    printf("%d\n",n);
  }

return 0;
}

这个程序的输出结果是“press any key to continue”,请问是怎么回事?
搜索更多相关主题的帖子: 水仙花 
2009-09-29 08:19
chenaiyuxue
Rank: 5Rank: 5
来 自:山东滨州
等 级:职业侠客
帖 子:334
专家分:370
注 册:2008-5-20
收藏
得分:2 
1. for(int n = 100;n < 1000;n++) C语言不支持这种写法,你可以改成
   int n;
   for(n = 100;n < 1000;n++)
2. 水仙花数的定义是个位、十位、百位数的立方和等于该数本身的数
   所以temp = i*i + j*j + m*m;改成
   temp = i*i*i + j*j*j + m*m*m;

你是雪,我是尘埃,相遇是意外;你坠落,在我胸怀,流进我血脉。
2009-09-29 08:33
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:2 

水仙花数 用 减法来解
用加法可能会溢出, 用减法 减一个一个数的立方,
结果得0说明是 水仙花数.

这样可以简单的 处理稍微 大点的数



临时想的  支持的顶啊

我就是真命天子,顺我者生,逆我者死!
2009-09-29 08:41
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
一个n位数的各位上的数的n次方的和等于自己的数

我就是真命天子,顺我者生,逆我者死!
2009-09-29 09:12
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:2 
程序代码:
#include<stdio.h> 
 
int main() 
{ 
  int i,j,m,n; 
 
  for( n = 100;n < 1000;n++) 
{ 
    i = n/100; 
    j = (n % 100)/10; 
    m = n % 10; 
 
    if(n== i*i*i + j*j*j + m*m*m) 
    printf("%5d\n",n); 
  } 
 
return 0; 
} 
多注意一下细节就ok了,水仙花数的定义也弄准确。
2009-09-29 12:20
放弃那个阿姨
Rank: 2
等 级:论坛游民
帖 子:41
专家分:75
注 册:2009-9-29
收藏
得分:2 
回复 2楼 chenaiyuxue
不是很懂哦。
如果数大的话,
在定义的时候就不能是int型哦、、
2009-09-30 18:01
快速回复:请问这个水仙花数的程序错在哪里?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025522 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved