输入两个正整数m和n(m>=1,n<=1000)输出m和n之间的完数。编译没错运行出错为什么啊

#include<stdio.h>
int main(void)
{
int n,m;
printf("请输入两个正整数n和m:");
scanf("%d%d",&n,&m);
int factorsum(int number);
for(int i=n;i<=m;i++)
{
if(i=factorsum(i))
printf("%d\n",i);
};

return 0;
}
int factorsum(int number)
{
int sum=0;
for(int a=1;a<number;a++)
{
if(number%a==0)
sum=sum+a;
}
return sum;
}

你这真能编译吗?首先,你怎么在main函数里面声明函数呢?
你如果是C语言的话for里面是不能定义变量的,要在外面定义,里面赋值。

#include<stdio.h>
intfactorsum(intnumber);
intmain(void){intn=0,m=0;printf("请输入两个正整数n和m:");scanf("%d,%d",&n,&m);inti;for(i=n;i<=m;i++){if(i==factorsum(i))printf("%d\n",i);}return0;}
intfactorsum(intnumber){intsum=0;inta;for(a=1;a<number;a++){if(number%a==0)sum=sum+a;}returnsum;}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-27
#include<stdio.h>
int main(void)
{
int n,m;
printf("请输入两个正整数n和m:");
scanf("%d%d",&n,&m);
int factorsum(int number);
for(int i=n;i<=m;i++)
{
if(i==factorsum(i))//判定条件时使用==
printf("%d\n",i);
}

return 0;
}
int factorsum(int number)
{
int sum=0;
for(int a=1;a<number;a++)
{
if(number%a==0)
sum=sum+a;
}
return sum;
}追问

这跟我的程序不是一样的吗?

追答

改了好吧,有结果了,以前的程序没结果,具体你求什么我不清楚,只是修改你 的程序逻辑错误问题

本回答被网友采纳
相似回答
大家正在搜