| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 592 人关注过本帖
标题:完全数,怎么不行呢
只看楼主 加入收藏
science
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-11-22
收藏
 问题点数:0 回复次数:6 
完全数,怎么不行呢

输出1000内的完全数,我的算法有错误吗?
main()
{
int i;
for(i=1;i<=1000;i++)
printf("%d ",perfect(i));
getch();
}
int perfect(int i)
{
int j,k=0;
for(j=1;j<=i/2;j++)
{
if(i%j==0)
k=k+j;

}
if(k==i)
return i ;
}

搜索更多相关主题的帖子: 完全数 
2007-01-12 10:47
zzymoon
Rank: 1
等 级:新手上路
帖 子:82
专家分:1
注 册:2006-9-19
收藏
得分:0 

int perfect(int i);
函数应该先声明啊``
for(i=1;i<=1000;i++)
printf("%d ",perfect(i));
这里每次循环都会打印一个值,如果perfect(int)这个函数没有返回i那么就打印一个随机值
这样改一个吧:
main()
{

int i;
int perfect(int);
for(i=1;i<=1000;i++)
{int tmp=perfect(i);
if(tmp)
printf("%d ",tmp);
}
getch();
}
int perfect(int i)
{
int j,k=0;
for(j=1;j<=i/2;j++)
{
if(i%j==0)
k=k+j;

}
if(k==i)
return i ;
return 0;
}


程序天下,C的亡魂。 偶``````来自地狱
2007-01-12 11:23
zzymoon
Rank: 1
等 级:新手上路
帖 子:82
专家分:1
注 册:2006-9-19
收藏
得分:0 
补充一点,如果perfect(int)不是返回i,那一般编译器会返回perfect的调用次数

程序天下,C的亡魂。 偶``````来自地狱
2007-01-12 11:26
Music
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-11-9
收藏
得分:0 
恩。。不错

﹥ 癫⒊倒⒋啲生萿﹎還會不會_洅í繼х續﹎﹖
2007-01-12 11:36
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
收藏
得分:0 

看了不得楼做的,可是我还有一些地方不明白,能请教一下吗?
return 0;它为什么一定要返回0呀?


~~我的明天我知道~~
2007-01-12 14:29
hao0716
Rank: 4
等 级:业余侠客
威 望:1
帖 子:354
专家分:224
注 册:2006-4-11
收藏
得分:0 

主函数一般是被操作系统调用而被启动的--操作系统给它分配合理的内存使用区域,一些硬件接口等等的东西;
最终,程序结束的时候,return语句把控制权转交给操作系统,同时带回一个int值,比如楼主你问的return 0;当然你还可以返回其他的数值;

在dos时代,这个主函数的return语句是非常用的,其中一个用途就是用在batch文件中[dos的批处理表],这个batch文件可以按你预先设定好的逻辑顺序(就像编程一样),调用各个程序,并按每个程序的返回值决定如何执行下一个程序,或者退出...

总的来说,主函数的return语句主要是用在更高一个级别上数据的流程控制上(现在,还有许多安装程序在使用这个方法)。

偶抄滴


2007-01-12 14:35
神秘失恋
Rank: 1
等 级:新手上路
帖 子:663
专家分:0
注 册:2007-1-6
收藏
得分:0 

d....


上帝之手.........
2007-01-12 15:53
快速回复:完全数,怎么不行呢
数据加载中...
 
   



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

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