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的答案的确对的,就是思路和我题目要求的不一样。不过也谢谢! 展开
#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的答案的确对的,就是思路和我题目要求的不一样。不过也谢谢! 展开
4个回答
展开全部
错误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 只返还一个值
以上是我个人的理论 供参考
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 只返还一个值
以上是我个人的理论 供参考
展开全部
你的返回值错了……败历
帮你改好游腔了:
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;
}
帮你改好游腔了:
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;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看哪仿拿不懂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);
}
#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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你返答的输出喊悄结郑世渣果:0;
这没错的。。
你用什么C??我用turboc 2.0编译的
这没错的。。
你用什么C??我用turboc 2.0编译的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询