当前位置: 代码迷 >> C语言 >> [求助]请问这题错在哪里
  详细解决方案

[求助]请问这题错在哪里

热度:131   发布时间:2006-03-12 02:46:00.0
[求助]请问这题错在哪里
main()
{float s();
int n;
scanf("%d",&n);
printf("s(%d)=%f\n",n,s(n));
}
float s(int n);
{float s;
if(n==1)
return(1.0);
else return(s(n-1)+n*n);
}编译时出现错误
提示信息是:declaration syntax error
请问错在哪啊
搜索更多相关的解决方案: return  提示信息  

----------------解决方案--------------------------------------------------------
int n
就全部用%d。。
不要用%f
----------------解决方案--------------------------------------------------------
main()
{float s();
int n;
scanf("%d",&n);
printf("s(%d)=%f\n",n,s(n));
}
float s(int n); /*这里多了一个分号*/
{float s; /*这里不能定义s,后面的s与函数好像会混,随便改一下就可以了。*/
if(n==1)
return(1.0);
else return(s(n-1)+n*n); /*这里的S*/
}
----------------解决方案--------------------------------------------------------
s函数中不能定义s,函数名后不能加分号,因为不是声明.
----------------解决方案--------------------------------------------------------
4楼理解好像有点错了, 这里的S函数是一个递归函数,
除了去掉函数定义那行的分号外,另外再把函数s函数里面的float s;去掉就可以了

[此贴子已经被作者于2006-3-12 16:04:38编辑过]


----------------解决方案--------------------------------------------------------
我觉得是不是还得在程序前加上声明啊?
我编译的时候如果没声明的话,会报错。
----------------解决方案--------------------------------------------------------
  相关解决方案