| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 510 人关注过本帖
标题:为什么我运行出来没结果,求大神看看看哪错了
只看楼主 加入收藏
z450558237
Rank: 2
等 级:论坛游民
帖 子:48
专家分:11
注 册:2014-10-21
结帖率:55.56%
收藏
 问题点数:0 回复次数:7 
为什么我运行出来没结果,求大神看看看哪错了
#include<stdio.h>

void main()
{
    int i,j,n,sum=0,max=0;
    for(i=1;i<=1000;i++)
    {
        if(i=1)
        {
            break;
        }
        else
        {
            for(j=1;j<i;j++)
            {
                if(i%j==0)
                {
                    sum=sum+j;
                }
                if(sum==i)
                {
                    n++;
                    max=i;
                    if(n%10==0) printf("\n");
                    printf("-5%d",i);
                }
            }
        }
    }
}
 题目是求0-1000中的完数,完数就是因子(不包含自己本身)之和等于这个数本身,比如6的因子是1,2,3,1+2+3=6.要求每行10个数,每个数占5格,左对齐
搜索更多相关主题的帖子: include 
2014-11-05 21:07
我是魔鬼
Rank: 1
等 级:新手上路
帖 子:2
专家分:4
注 册:2014-11-5
收藏
得分:0 
给你改了下,你看下应该就会明白了,下面程序在vc中已得到验证

#include<stdio.h>

void main()
{
    int i,j,n=0;
    for(i=1;i<=1000;i++)
    {
       int    sum=0;        //每次循环都要清零
       /* if(i=1)
        {
            break;
        }   
        else
        {    */
            for(j=1;j<i;j++)
            {
                if(i%j==0)
                {
                    sum=sum+j;
                }
            }
            if(sum==i)
            {
                    n++;
                  //  max=i;
                    if(n%10==0) printf("\n");
                    printf("%5d",i);
             }
            
        
    }
}
2014-11-05 22:34
酷爱陈阳
Rank: 2
等 级:论坛游民
帖 子:14
专家分:33
注 册:2014-11-1
收藏
得分:0 
你没有注意循环重置这个问题,这个问题今天我也犯错了,因为我今天也编了一个这样的程序;还有一定,我不知道你定义max有什么作用
这是我的源文件
#include <stdio.h>
void main()
{
    int i,j,sum,n;
    int a[100];
    for(i=1;i<1000;i++)
    {
        n=0;
        sum=0;
        for(j=1;j<i;j++)
        {
            if(i%j!=0)
                continue;
            else
            {
                a[n++]=j;
                sum=sum+j;
            }
        }
        a[n]='\0';
        if(sum==i)
        {
            printf("%3dits factors are 1",i);
            for(j=0;a[j]='\0';j++)
            {
                printf(",%d",a[j]);
            }
            printf("\n");
        }
    }
    printf("\n");
}

这个程序不仅可以输出1000以内的完数,而且可以输出完数的因子;
如果你不想用数组的话,用下面的源文件也可以,不过效率会低点。
#include <stdio.h>
void main()
{
    int m,s,i;
    for(m=2;m<1000;m++)
    {
        s=0;
        for(i=1;i<m;i++)
            if(m%i==0)
                s=s+i;
            if(s==m)
            {
                printf("%4d,its factors are",m);
            for(i=1;i<m;i++)
                if(m%i==0)
                    printf("%5d",i);
                printf("\n");
            }
    }
}

还有你的输出格式没必要这样,1000以内的完数只有3个,所以你的格式控制语句没有实际意义。
2014-11-05 22:53
z450558237
Rank: 2
等 级:论坛游民
帖 子:48
专家分:11
注 册:2014-10-21
收藏
得分:0 
回复 3 楼 酷爱陈阳
我是考试题。。。老师要求的,估计是考我们会不会,谢谢,我考试答案没把每次的sum清0,所以错了。。我就怕老师直接给0分。。max是为了下面的运算,下面有关于max的其他运算

[ 本帖最后由 z450558237 于 2014-11-5 23:59 编辑 ]
2014-11-05 23:58
z450558237
Rank: 2
等 级:论坛游民
帖 子:48
专家分:11
注 册:2014-10-21
收藏
得分:0 
回复 2 楼 我是魔鬼
谢谢,就是忘了每次把sum清0,长记性了
2014-11-05 23:59
GBL
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-10-29
收藏
得分:0 
最后的printf 在格式控制中不用加- 使它左对齐么
2014-11-06 00:14
z450558237
Rank: 2
等 级:论坛游民
帖 子:48
专家分:11
注 册:2014-10-21
收藏
得分:0 
回复 6 楼 GBL
我原程序加了啊
2014-11-06 00:23
酷爱陈阳
Rank: 2
等 级:论坛游民
帖 子:14
专家分:33
注 册:2014-11-1
收藏
得分:0 
回复 4 楼 z450558237
没事,其实我也是初学者
2014-11-06 12:14
快速回复:为什么我运行出来没结果,求大神看看看哪错了
数据加载中...
 
   



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

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