c语言函数调用的问题 20

一道关于函数调用的c语言题,是要用调用函数的方法将10000内的完数,我才学的c,连return都不懂,各位看看我的程序错在哪?#include<stdio.h>intf... 一道关于函数调用的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的答案的确对的,就是思路和我题目要求的不一样。不过也谢谢!
展开
 我来答
wenhuan301
2009-03-20 · 超过27用户采纳过TA的回答
知道答主
回答量:83
采纳率:0%
帮助的人:0
展开全部
错误1:main函数是如果 if为真,闷链输出结果
main函数也只运行了一次,
错误2:factor函数值是返还1或0 并没有返还s的值,所以就算你的MAIN函数运行一次也只是输出1或0;
错误3:你的乎罩正factor函数真本身就有错误岁悔你的循环体只求出了一个值 还有这个值的后面你没有求出来;
以下就是我的写的程序我会指出你的错误地方
#include <stdio.h>
main()
{
void qiushu(int n);/*函数声明为无返还值*/
int n=10000;
qiushu(n);
}
void qiushu(int n)
{
int r,j,i;
for(i=1;i<n; i++)
{
r=0;
for(j=1;j<i;j++)
{
if(i%j==0){r=r+j;}
}
if(r==i){printf("the result is:%d\n",r);r=0;}/*我的IF语句还是循环体中求到一个值后,再求其他值,这也是你的错误3*/
}
}
这里我用无函数返还,强调调用一次函数只返还一个值,即return 只返还一个值
以上是我个人的理论 供参考
youz
2009-03-19 · TA获得超过2.2万个赞
知道大有可为答主
回答量:3757
采纳率:0%
帮助的人:2066万
展开全部
你的返回值错了……败历
帮你改好游腔了:
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;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c622d7084
2009-03-19 · 超过15用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:35.6万
展开全部
看哪仿拿不懂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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
情感世界BB
2009-03-19 · TA获得超过2323个赞
知道小有建树答主
回答量:1336
采纳率:100%
帮助的人:559万
展开全部
你返答的输出喊悄结郑世渣果:0;
这没错的。。

你用什么C??我用turboc 2.0编译的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式