C语言程序定义函数过程中,数值返回错误。 5
菜鸟。我想编写一个简单的C语言程序,输入两个数字:x和y.然后计算出x/y的值。于是我编写了如下程序:#includefloatx,y,z;floatdivide(flo...
菜鸟。我想编写一个简单的C语言程序,输入两个数字:x 和 y.然后计算出 x / y 的值。于是我编写了如下程序:# include
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); printf("\nThe value is %f",z); system("pause"); return 0;}float divide(float a, float b){ if(y == 0) puts("\nThe second number can't be evaluated as 0! "); else return x/y;}最终执行的结果是:当 y 不等于0 的时候,一切正常,当 y 等于0 的时候,出现了如下界面:
为什么要显示“The value is 0.000000”这个呢?当 y = 0 的时候如何不让他显示这一行呢? 展开
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); printf("\nThe value is %f",z); system("pause"); return 0;}float divide(float a, float b){ if(y == 0) puts("\nThe second number can't be evaluated as 0! "); else return x/y;}最终执行的结果是:当 y 不等于0 的时候,一切正常,当 y 等于0 的时候,出现了如下界面:
为什么要显示“The value is 0.000000”这个呢?当 y = 0 的时候如何不让他显示这一行呢? 展开
6个回答
展开全部
#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时才有返回值 这样不对
展开全部
我不说你形参与实参搞混了,下面的已经说了,我就不多说。
我说一下为什么要显示“The value is 0.000000”。
这个函数能运行是因为y是一个全局变量,当你输入y=0时执行if语句中的puts,可是你在if中没有该写函数返回值,你的定义与声明是有返回值的,所以编译会有个warming,在你没有写返回return的情况下,你的系统自动给你返回了一个0,并将这个0赋给z,于是系统继续执行下面语句printf("\nThe value is %f",z);,也就是The value is 0.000000,这里为什么有这么多0是因为z是浮点型数据。要让它不显示下面的人已经给你了。
我说一下为什么要显示“The value is 0.000000”。
这个函数能运行是因为y是一个全局变量,当你输入y=0时执行if语句中的puts,可是你在if中没有该写函数返回值,你的定义与声明是有返回值的,所以编译会有个warming,在你没有写返回return的情况下,你的系统自动给你返回了一个0,并将这个0赋给z,于是系统继续执行下面语句printf("\nThe value is %f",z);,也就是The value is 0.000000,这里为什么有这么多0是因为z是浮点型数据。要让它不显示下面的人已经给你了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以把代码改成
# include "stdio.h"
float x, y, z;
float divide(float a, float b, float *z);
int main(void)
{
printf("\nEnter two float numbers: \n");
scanf("%f%f", &x, &y);
if(divide(x, y, &z))
printf("\nThe value is %f",z);
getchar();
return 0;
}
float divide(float a, float b, float *z)
{
if(y == 0){
puts("\nThe second number can't be evaluated as 0! ");
return false;
}
else{
*z = x/y;
return true;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-01
展开全部
你这个能通过编译?
# include <stdio.h>
# include <stdlib.h>
float x, y, z;
float divide(float, float);
int main(void)
{
printf("\nEnter two float numbers: \n");
scanf("%f %f", &x, &y);
if(y==0)
puts("\nThe second number can't be evaluated as 0! ");
else
{
z = divide(x, y);
printf("\nThe value is %f",z);
}
system("pause");
return 0;
}
float divide(float x, float y)
{
return x/y;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实你的判断不需要再子函数中判断,在主函数中判断不更好???
在main中,判断如果y=0,那么直接打印错误
不是零,那么调用子函数
在main中,判断如果y=0,那么直接打印错误
不是零,那么调用子函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询