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 的时候如何不让他显示这一行呢?
展开
 我来答
锋雨烈刃
2013-09-01 · TA获得超过168个赞
知道小有建树答主
回答量:317
采纳率:0%
帮助的人:141万
展开全部
#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时才有返回值 这样不对  

gwsunshine
2013-09-01 · 超过18用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:24万
展开全部
我不说你形参与实参搞混了,下面的已经说了,我就不多说。

我说一下为什么要显示“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是浮点型数据。要让它不显示下面的人已经给你了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aoqingxin
2013-09-01 · 超过23用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:65万
展开全部

可以把代码改成

# 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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cpucash
2013-09-02 · TA获得超过1584个赞
知道小有建树答主
回答量:1457
采纳率:66%
帮助的人:956万
展开全部
其实你的判断不需要再子函数中判断,在主函数中判断不更好???
在main中,判断如果y=0,那么直接打印错误
不是零,那么调用子函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式