首页新闻找找看学习计划

使用函数输出指定范围内的完数

0
[已解决问题] 解决于 2018-08-08 16:53

题目:使用函数输出指定范围内的完数:输入两个正整数m和n(1<=m,n<=1000),输出m与n之间的完数,完数就是因子和它本身相等的数。要求定义并调用函数factorsum(number),它的功能是返回number的因子和。例如:factorsum(12)的返回值是16(1+2+3+4+6)。

#include<stdio.h>
int factorsum(int i);
int main(){
 int n,m,i,count; 
 printf("Enter m,n:");
 scanf("%d%d",&m,&n);

 if(m>n){
  printf("please again!\n");
  
 }
 printf("Enter m,n:");
    scanf("%d%d",&m,&n);
 if(m<n){
   for(i=m;i<=n;i++){
          factorsum(i);
          if(count==i){
           printf("%d\n",i);
    }
   }
 }
 return 0;
}
int factorsum(int i){
 int j,count;
 count=0;
 for(j=1;j<=i/2;j++){
  if(i%j==0){
   count=count+j;
  }
 }
 return count;
}

但是结果显示

Enter m,n:6 3
please again!
Enter m,n:3 6
3
4
5
6
Press any key to continue

这样显然不对,最小的一个完数应该是6,他应该只输出6.还有count是不是定义有问题?很纠结,能帮忙说一下问题出在哪里以及怎么改吗?谢谢!

西戈wzc的主页 西戈wzc | 菜鸟二级 | 园豆:222
提问于:2018-08-07 21:51
< >
分享
最佳答案
0

if(count==i)

判断的时候你少写了一个=

奖励园豆:5
窗户 | 小虾三级 |园豆:850 | 2018-08-08 01:33

现在有这么一个警告,显示未初始化count,但是在运行一次又没有这个了,而结果全显示

直接没有了结果,是怎么回事?

西戈wzc | 园豆:222 (菜鸟二级) | 2018-08-08 08:42

@西戈wzc: 

你count好像没赋值

count = factorsum(i);

窗户 | 园豆:850 (小虾三级) | 2018-08-08 18:21

@窗户: 就是就是,我也发现这个问题了,子函数只是运行却没有返回值

西戈wzc | 园豆:222 (菜鸟二级) | 2018-08-09 13:21
其他回答(1)
0

在函数中只是调用了函数,却没有给主函数返回值,所以应该是count=f(i);

西戈wzc | 园豆:222 (菜鸟二级) | 2018-08-08 16:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册