c语言函数调用的问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 01:27:02
一道关于函数调用的c语言题,是要用调用函数的方法将10000内的完数,我才学的c,连return都不懂,各位看看我的程序错在哪?
#include<stdio.h>
int factor(int m)
{int i,j,s;
for(i=1;i<m;i++)
{s=0;
for(j=1;j<i;j++)
if(i%j==0)
{s=s+j;
}}
if(s==i) /*这里已经对了*/
return 1;
else
return 0;}

main()
{if (factor(10000)==0)
printf("%d",factor(10000));
return 0;
}
怎么可能? 结果是6 8 还有两个数,忘了。好像是400多和一个上千的数

难道就没有高手来解决下?????

我没有把题说清楚,factor(n)的作用是判断是否为完数,
main()函数才来指定n的取值

wenhuan301的答案的确对的,就是思路和我题目要求的不一样。不过也谢谢!

你的返回值错了……
帮你改好了:
void factor(int m)
{
int i, j, s;

for (i=1;i<m;i++)
{
s=0;

for(j=1;j<i;j++)
if(i%j==0)
{
s=s+j;
}

if (s == i) /*这里已经对了*/
printf("%d ", s);
}
}

int main()
{
factor(10000);

system("pause");
return 0;
}

你的输出结果:0;
这没错的。。

你用什么C??我用turboc 2.0编译的

看不懂RETURN,其实也可以不用的
#include<stdio.h>
void factor(int m)
{
int i,j;
int s;
for(i=1;i<m;i++)
{
s=0;
for(j=1;j<i;j++)
if(i%j==0)
{
s=s+j;
}
if(s==i) /*这里已经对了*/
printf("%d\n",i);
}
}

void main()
{
factor(10000);
}

错误1:main函数是如果 if为真,输出结果
main函数也只运行了一次,
错误2:factor函数值是返还1或0 并没有返还s的值,所以就算你的MAIN函数运行一次也只是输出1或0;
错误3:你的factor函数真本身就有错误你的循环体