| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 255 人关注过本帖, 1 人收藏
标题:高手帮帮忙,帮找错误。
只看楼主 加入收藏
caizhaocun
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-6
结帖率:0
收藏(1)
 问题点数:0 回复次数:5 
高手帮帮忙,帮找错误。
#include<stdio.h>
void main()
{
    int i,j,t,s=0;
    for(i=2;i<=1000;i++)
    {
        for(j=1;j<i;j++)
        {
            t=i%j;
         if(t==0)
         {
             s=s+j;
         }
       if(i==s)
           printf("%d  ",i);
        }
    }
getchar();
}这个是输入一千以内的完数的,可是不知道哪里出了问题了
2011-04-20 21:48
caizhaocun
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-4-6
收藏
得分:0 
#include<stdio.h>
void main()
{
    int n,a,i;
    float s,t;
    n=0;
    a=1;
    t=1;
    s=0;
while(t>=1e-5)
{
   s=s+t;
   n=n+1;
   for(i=1;i<=n;i++)
   {
       n=n*i;
   }
   t=a/n;
   printf("%f",t);
   printf("\n");
}
printf("%f",s);
getchar();
}这个是求e的,也不知道哪出了问题
2011-04-20 21:50
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
程序代码:
#include<stdio.h>
void main()
{
    int i,j,t,s=0;
    for(i=2;i<=1000;i++)
    {
        s = 0;    // 对每个数字 s 都要清零
        for(j=1;j<i;j++)
        {
            t=i%j;
         if(t==0)
         {
             s=s+j;
         }
        }
       if(i==s)    // 这个 if 放在内层循环外面,不然同一个完数会被输出很多次
           printf("%d  ",i);
    }
getchar();
}
2011-04-20 21:55
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
程序代码:
// 下面的代码求不到阶乘
n=n+1;
for(i=1;i<=n;i++) {
       n=n*i;
}

// 求 e 向下面这样就行了

float e = 2,t, n = 2;
for (t = 1.0 / 2.0; t > 0.00001; t /= n) {
    s += t;
    n++;
}


[ 本帖最后由 voidx 于 2011-4-20 22:17 编辑 ]
2011-04-20 22:15
緣來④伱
Rank: 2
来 自:河南商丘
等 级:论坛游民
帖 子:35
专家分:37
注 册:2011-3-9
收藏
得分:0 
if(i==s)
      printf("%d  ",i);

这个if语句放错位置了,应该放在第二个for循环外,没记错的话,完数是所有非自身因子之和与本身相等的数,你这样写因子还没全部相加就与本身比较了,岂能不错
2011-04-21 18:17
緣來④伱
Rank: 2
来 自:河南商丘
等 级:论坛游民
帖 子:35
专家分:37
注 册:2011-3-9
收藏
得分:0 
再补充一个错误,s=0;应该放在第一个for循环里,每检查一个数都要对因子和清零
还是写出来吧
#include<stdio.h>
void main()
{
    int i,j,t,s;
    for(i=2;i<=1000;i++)
    {
        s=0;
        for(j=1;j<i;j++)
        {
           t=i%j;
           if(t==0)
           {
              s=s+j;
           }
        }
        if(i==s)
           printf("%d  ",i);
    }
    getchar();
}
2011-04-21 18:24
快速回复:高手帮帮忙,帮找错误。
数据加载中...
 
   



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

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