倒影Gaara 发表于 2017-12-2 17:27:59

完数输出

我想输出1-100之间的完数但为什么要多出一个101

#include<stdio.h>
int f (int n);
int main ()
{

tianzhi1992 发表于 2017-12-2 17:41:05

请帖上代码

倒影Gaara 发表于 2017-12-2 22:33:19

#include<stdio.h>
int f (int n);
int main ()
{
        int n, i, result,m;

        printf("Enter n:");
        scanf("%d",&n);
        result=f(n);
        printf("%d ",result);
}
int f (int n)
{
        intsum=1, i, j,m;
        printf("Enter m:");
        scanf("%d",&m);
        for(j=m;j<=n;j++)
        {
           for(i=1;i<=j-1;i++)
          {
                if(j%i==0)
                sum=sum+i;
          }
          if(sum==j)
          printf("%d ",j);
          sum=0;
    }
    return j;
}


3-3 发表于 2017-12-4 16:29:39

倒影Gaara 发表于 2017-12-2 22:33
#include
int f (int n);
int main ()


#include<stdio.h>
int f (int n);
int main ()
{
      int n, i, result,m;

      printf("Enter n:");
      scanf("%d",&n);
       result=f(n);//返回值为j = 101,所以打印出101
      printf("%d ",result);
}
int f (int n)
{
      intsum=1, i, j,m;
      printf("Enter m:");
      scanf("%d",&m);
      for(j=m;j<=n;j++)//当一直加到 j=101 的时候,这个循环结束,这时j = 101;
      {
         for(i=1;i<=j-1;i++)
          {
                if(j%i==0)
                sum=sum+i;
          }
          if(sum==j)
          printf("%d ",j);
          sum=0;
    }
    return j;// 前面循环结束时,j = 101,最后一句就将这个j = 101返回到主函数中。
}


要打印正确的值,就不要打印j 的值,也就是不要打印返回值就行了。
页: [1]
查看完整版本: 完数输出