注册 登录
编程论坛 C++教室

请教高手,哪里出错了?望可以详细解释

西玉 发布于 2010-05-14 12:54, 474 次点击
#include <iostream.h>
template <typename T>
T fac(int n)
{  int f;
   if(n<0)
   cout<<"error!"<<endl;
   else if(n=0)||(n=1)
   f=1;
   else if(n>1)
   f=n*fac(n-1);
   return f;

}
  int main()

  {  int a,b,c,m,n,q,g;
  cout<<"please input three numbers:"<<endl;
  cin>>a>>b>>c;
  m=fac(a);
  n=fac(b);
  q=fac(c);
  g=m+n+q;
  cout<<"he="<<g<<endl;

  return 0;

  }
3 回复
#2
cnfarer2010-05-14 14:41
T fac(int n)
{  int f;
   if(n<0)
   cout<<"error!"<<endl;
   else if(n=0)||(n=1)
   f=1;
   else if(n>1)
   f=n*fac(n-1);
   return f;
}
#3
西玉2010-05-29 18:34
但你好像没改什么啊
#4
bccn2502010-05-30 01:18
就这些编译不能通过的地方做些修改,至于你函数的功能我就不看了
#include <iostream.h>
template <typename T>
T fac(int n)        //参数用 T n 吧要不然不行
//建议改为 T fac(T n);
{  int f;            //函数的反回值类型为 T ,你下面 return f 在这最好把f的类型也改为T
//建议改为 T f;
   if(n<0)
   cout<<"error!"<<endl;
   else if(n=0)||(n=1)        // if语句有错误,是不是忘了加括号
//建议改为 if((n=0)||(n=1))
   f=1;
   else if(n>1)
   f=n*fac(n-1);
   return f;

}
  int main()

  {  int a,b,c,m,n,q,g;
  cout<<"please input three numbers:"<<endl;
  cin>>a>>b>>c;
  m=fac(a);
  n=fac(b);
  q=fac(c);
  g=m+n+q;
  cout<<"he="<<g<<endl;

  return 0;

  }
1