| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1065 人关注过本帖
标题:自己编的一个求1000以内完数的C程序,有点问题,希望高手进来指点一下
只看楼主 加入收藏
shinan77
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:87
专家分:188
注 册:2010-9-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
自己编的一个求1000以内完数的C程序,有点问题,希望高手进来指点一下
源代码如下:
#include<stdio.h>
void main()
{
    int i=0,j=0,k=0,m=0,n=0,a[10]={0};
    for(i=1;i<=1000;i++)
    {
            k=0,m=0,n=0;
        for(j=1;j<i;j++)
        {
            if(i%j==0)
            {
                m+=j;
                                    a[k++]=j;//删除这句话,正常
            }
        }
        if(m==i)
        {
            printf("%d its factors are ",i);
            for(n=0;n<k;n++)
                {
                    printf("%d ",a[n]);
                    a[n]=0;
                }
                printf("\n");
        }
   
    }
}
程序运行之后,结果中没有496,但是把注释的那行删除之后就正常了。
搜索更多相关主题的帖子: 源代码 
2010-09-24 22:15
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:20 
你的整体思路没什么其他问题!
你说的问题在于存放i的因子的数组 a[10]={0}长度过短导致运行时内存管理失败!因为会出现多个超过10个因子的数!如60 72等,建议将该数组长度改大一点!至少为31!因为1000内因子数最多的是840 有31个因子!!
--------------------------------------------
PS:如果我来写这个程序,我会对找到完全数再次求其因子,边求边输出,就不要你的那个数组了!这个做法你可以参考下!

[ 本帖最后由 jack10141 于 2010-9-24 22:45 编辑 ]

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-09-24 22:41
shinan77
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:87
专家分:188
注 册:2010-9-24
收藏
得分:0 
回复 2楼 jack10141
谢谢啦

--------将学到的东西为我所用,这才是学习的目的 --------
2010-09-25 13:05
mrytsr
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-9-27
收藏
得分:0 
数组越界
2010-09-30 15:09
chinesebear
Rank: 2
等 级:论坛游民
帖 子:23
专家分:29
注 册:2010-9-30
收藏
得分:0 
a[k++]=j; 改成:a[k]=j;k++;
2010-10-01 19:02
快速回复:自己编的一个求1000以内完数的C程序,有点问题,希望高手进来指点一下
数据加载中...
 
   



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

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