输入2个正整数m和n(m>=1,n<=1000),输出m到n之间的所有完数

这是我写的程序:
#include<stdio.h>
void main()
{
int m,n,i,t;
int factorsum(int number);
printf("Input m(m>=1):");
scanf("%d",&m);
printf("Input n(n<=1000):");
scanf("%d",&n);
if(m>n)
{t=m;m=n;n=t;}
for(i=m;i<=n;i++)
{ if(i==factorsum(number))
printf("%d",i);
}
}
int factorsum(int number)
{
int i,sum=1;
for(i=2;i<number;i++)
{ if(number%i==0)
sum=sum+i;
}
return sum;
}

VC一直提示我error C2065: 'number' : undeclared identifier
到底怎么回事啊?我不是申明了吗?
哪位高手指点一下,在线等!!谢谢
没有分了很抱歉。。。。帮个忙吧

#include<stdio.h>
void main()
{
int m,n,i,t;
int factorsum(int number);//声明一个方法factorsum(int number)
printf("Input m(m>=1):");
scanf("%d",&m);
printf("Input n(n<=1000):");
scanf("%d",&n);
if(m>n)
{t=m;m=n;n=t;}
for(i=m;i<=n;i++)
{ if(i==factorsum(number))//调用方法factorsum(number)
printf("%d",i);
}
}
int factorsum(int number)
{
int i,sum=1;
for(i=2;i<number;i++)
{ if(number%i==0)
sum=sum+i;
}
return sum;
}
注:你在调用方法factorsum(number)时传入的参数是number(为了区分,我们把它叫做“传入的number”),但是number并没有定义,之前在声明方法int factorsum(int number);时定义的变量number(为了区分,我们把它叫做“声明里的number”),“传入的number”与“声明里的number”虽然名字相同,但是却是两个不同的变量,系统报错说没有定义number指的是你“传入的number”没有定义,只要在主函数中定义个number就好啦~还有,即使你在主函数中定义了变量number这个程序的目的也不是输出m到n之间的所有完数~
把你的程序改下如下:
#include<stdio.h>
void main()
{
int m,n,i,t;
int factorsum(int number);
printf("Input m(m>=1):");
scanf("%d",&m);
printf("Input n(n<=1000):");
scanf("%d",&n);
if(m>n)
{t=m;m=n;n=t;}
for(i=m;i<=n;i++)
{ if(i==factorsum(i))//只需把该处传入的参数改成i即可~
printf("%d",i);
}
}
int factorsum(int number)
{
int i,sum=1;
for(i=2;i<number;i++)
{ if(number%i==0)
sum=sum+i;
}
return sum;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-04-20
unmber确实没定义啊,int factorsum(int number);这句是声明,而且number被定义成一个形参,你在调用之前并没有定义,if(i==factorsum(number))这里number要求是个实参传入到factorsum函数的形参unmber中
第2个回答  2010-04-21
第四行变为int m,n,i,t,number;就行了
第3个回答  2010-04-21
迷惘。。。。。
相似回答