标题:求1到1000以内的完数
取消只看楼主
核晴核理
Rank: 3Rank: 3
来 自:北京
等 级:论坛游侠
帖 子:129
专家分:169
注 册:2012-6-14
结帖率:84.21%
已结贴  问题点数:20 回复次数:3 
求1到1000以内的完数
想用子函数来求质因数,然后主函数完成1到1000的循环判断,程序如下,可是运行不出结果,应该是子函数中k=a/2有问题,局部变量没有设初值,按照我这个思路应该怎么改才能正确运行呢?
#include<stdio.h>
int zys(int a)
{
    int s=0,x,k,i=0;
    static int b[20];
    k=a/2;
    for(x=1;x<=k;x++)
        if(a%x==0)
        {
            b[i]=x;
            i++;
        }
    for(x=0;x<i-1;x++)
        s=b[x]+b[x+1];
    return s;
}
main()
{
    int d;
    printf("1到1000以内完数为:");
    for(d=1;d<=1000;d++)
        if(d==zys(d))
            printf("%d ",d);
}
搜索更多相关主题的帖子: include return 质因数 
2012-08-22 16:26
核晴核理
Rank: 3Rank: 3
来 自:北京
等 级:论坛游侠
帖 子:129
专家分:169
注 册:2012-6-14
得分:0 
回复 2楼 embed_xuel
逻辑确实比较乱,呵呵,子函数的变量定义的没有特点,变量用途不好区分,如果要是您写这个程序会怎么写呢?
2012-08-22 19:42
核晴核理
Rank: 3Rank: 3
来 自:北京
等 级:论坛游侠
帖 子:129
专家分:169
注 册:2012-6-14
得分:0 
回复 5楼 pangding
谢谢斑竹,简洁明了,我顿悟了
2012-08-23 16:10
核晴核理
Rank: 3Rank: 3
来 自:北京
等 级:论坛游侠
帖 子:129
专家分:169
注 册:2012-6-14
得分:0 
刚发现帖子引发争议了,不好意思各位,作为帖子发起人,我有必要说下我的想法,embed_xuel前辈的回复方式我个人觉得很好,充分调动新手自己的潜力,什么问题帮你挑出来,然后具体的代码自己去想,自己去解决,我赞同,同时也向前辈说声谢谢,没有给分是我的问题,我的错,我再说下我自己,这个帖子的程序是我自己写的,说实话写的挺费劲的,本身跟各位前辈平时玩的代码不是一个档次,本人初学,刚刚一个月,正处在练习,构建编写思路的过程当中,有时候感觉自己的思路真的不好,各种绕弯,才能完成一个小程序,我个人希望能看到高手用同样的思路,怎么样简洁易懂的把这个程序写出来,我觉得这对我在c语言学习的路上帮助很大,至少是在本人现阶段的水平帮助非常大,说实话没有报酬,大家能在论坛上帮助新人,相信很多人都很感激,并且受益匪浅,真的想在这里对各位热心的前辈说一声,谢谢
2012-08-28 13:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-379934-1-1.html




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

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