c语言调用函数求1000以内的完数(完数指一个整数的值等于出它本身的所有因数和,比如6=1+2+3
c语言调用函数求1000以内的完数(完数指一个整数的值等于出它本身的所有因数和,比如6=1+2+3)为什么我这个程序我什么也没有输出,哪里错的...
c语言调用函数求1000以内的完数(完数指一个整数的值等于出它本身的所有因数和,比如6=1+2+3)
为什么我这个程序我什么也没有输出,哪里错的 展开
为什么我这个程序我什么也没有输出,哪里错的 展开
3个回答
展开全部
1、变量i的for循环里,累加部分错了,n++改为i++
2、逻辑错误,将if(s==n)放在累加的循环里是不正确的,也许存在最终的s>n的情形,这会导致误判
3、逻辑错误,这段程序只能输出最小的一个完数。正确的做法是,把循环内部的return改为输出语句,每次得到解后不是退出函数而是输出结果并继续计算
2、逻辑错误,将if(s==n)放在累加的循环里是不正确的,也许存在最终的s>n的情形,这会导致误判
3、逻辑错误,这段程序只能输出最小的一个完数。正确的做法是,把循环内部的return改为输出语句,每次得到解后不是退出函数而是输出结果并继续计算
更多追问追答
追问
能把正确代码发给我吗
追答
这程序没有必要建子函数,所以我直接一个main完事了。
#include <stdio.h>
int main()
{
int i,n,s;
for(n=2; n<=1000; n++){
s = 0;
for(i=1; i<=n/2; i++)
if(n%i == 0) s += i;
if(n == s)
printf("%d\n", n);
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询