重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
错误提示稀奇古怪
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了右江免费建站欢迎大家使用!
实际上是因为你的main函数返回有问题
main定义为int, 但你结束的时候仅仅是return; 成void了。
按惯例return 0;就行
i是一个变量,如果这个变量在一个函数内,可以作为函数的返回值。
return 是返回一个函数的值。函数内的某个变量可以作为函数的返回值返回。
但是在函数外,直接返回某个不在函数内部的变量是不可以的。
比如在main 中。
main()
{
int i ;
return i;
}
这是不行的。返回的是变量的内存地址。
#include stdio.h
//using namespace std;
float x, y, z;
float divide(float a, float b);
int main(void)
{
printf("\nEnter two float numbers: \n");
scanf("%d%d", x, y);
{
z = divide(x, y);
system("pause");
}
return 0;
}
float divide(float a, float b)
{
if(b == 0)
puts("\nThe second number can't be evaluated as 0! ");
//这个情况没有return
else
printf("\nThe value is %f",a/b);
//既然是函数,这应该用形参,(指针另说)
return a/b;
}
形参 实参 搞混了 函数里直接用的全局变量还不是函数的形参 还有 那个 printf("\nThe value is %f",a/b); 应该放到函数里或者在MAIN里加判断决定是否输出,而且divide函数里只有 在Y!=0时才有返回值 这样不对
有 else 是
只有 n == 0 return jcjg;返回jcjg 否则不确定返回何值(实际返回 eax 寄存器的最后一次值)
没有 else 任何时候 return jcjg;总是会返回jcjg。
不过没见过这样用递归的,
像这种简单计算,正常都是用迭代处理,不用递归的;
只有像树一类的复杂的数据结构,和排序或更复杂的算法,才用递归实现.
int jc(int n)
{
if(n != 0)
{
printf("%d-%d\n",jcjg,n);
jcjg = jcjg * n;
//jc(n - 1);改成
return jc(n - 1);看行不行;
}
else
{
return jcjg;
}
}
除了主函数以外的三个函数的返回类型都是void,但是函数体内部却有返回值,所以错了,把void改成int就可以了。