代码中出现“ not a function ”是什么意思?

 我来答
吃吃忘记了
推荐于2019-08-13 · TA获得超过163个赞
知道答主
回答量:40
采纳率:0%
帮助的人:31.7万
展开全部
呵呵 我用VC++ 6.0调试了半天,就由我回答你吧。
首先,它说“y ,not a function ”的意思就是 “y不是函数”。那当然了,y是你定义的整形变量,怎么是函数呢? 所以,你把 “y= n + y( n - 1 );”这一句改成“ y= n + total( n - 1 );”就对了。因为total才是你定义的函数啊!

当我找到这个错误时,我想程序一定对了。但是我又运行的时候,才发现了好多不规范甚至错误的地方。比如说:有的子函数应该有一个返回值。而这个total函数是必须有一个返回值了。所以,total函数的结尾应该加一句“return y”。

还有,你的if语句用的不规范。正确的应该是: if (n < 0) else if (n==1) else if(n>1)

还有,if(n==1) y=1; printf("%5d",y); 这三句中的printf语句完全是多余的,最后那个return 语句,就能实现这一功能。

还有,楼主犯了一个很马虎的错误,我说结果怎么老是少一个数呢。原来,楼主写的主函数里面,printf("%5d\n",n,y); 这一句,,你少写了一个%d 啊!晕死~~~

正确的、又没有警告的程序如下:

#include <stdio.h>
void main()
{
int total(int n);
int y,n;

printf("请输入一个正整数:\n");
scanf("%d",&n);
y=total(n);
printf("%5d,%5d\n",n,y);

}

int total(int n)
{
int y;

scanf("d%",&n);

if (n < 0)
printf("请输入正数\n");

else if(n==1)
y=1;

else if (n>1)
y= n + total( n - 1 );

return y;
}

感觉楼主的子函数学的不好,还有一些基础知识不扎实(比如说if语句)。希望楼主多多练习基本功,就从写简单的程序开始。。多用用调用子函数的知识。 呵呵~~
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式