代码中出现“ not a function ”是什么意思?
1个回答
展开全部
呵呵 我用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语句)。希望楼主多多练习基本功,就从写简单的程序开始。。多用用调用子函数的知识。 呵呵~~
首先,它说“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语句)。希望楼主多多练习基本功,就从写简单的程序开始。。多用用调用子函数的知识。 呵呵~~
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询