| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 459 人关注过本帖, 1 人收藏
标题:自定义函数请教
只看楼主 加入收藏
飘青
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2012-7-8
结帖率:70.59%
收藏(1)
已结贴  问题点数:10 回复次数:6 
自定义函数请教
#include"stdio.h"
void main()
{
int min11(int x,int y);
int a,b,d;
float c;
scanf("%d%d",&a,&b);
if(a>b)
{
d=a+b;
}
else if(a==b)
{
d=a-b;
}
else
{
d=a*b;
}
c=min11(d-1,d+1);
printf("%d\n",c);
}
int min11(int x,int y)
{
float z;
if(x>y)
z=x/y;
else
z=y/x;
return(z);
}

我输入 2 3  得到的结果是0   我最这个结果不是太理解
首先我说说我的理解
z因为是浮点型 则 z=1.4000000(后面的略)  但是自定义函数是int  则在转换的时候变成1 返回值给主函数 赋值给c  

请教2个问题:
1. 此时c是float型 对自定义int型返回的值需要转换吗?
2.这个地方为什么结果为0
搜索更多相关主题的帖子: include return 
2012-07-19 23:52
obstratiker
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:198
专家分:758
注 册:2011-5-5
收藏
得分:2 
因为你在printf();时转换符是 %d 而 c 是 float 型的
所以给它滤掉了
把 c 换成 int 或者 printf(); 这改成 %f
2012-07-20 00:45
circlemiss
Rank: 2
等 级:论坛游民
帖 子:30
专家分:51
注 册:2012-7-19
收藏
得分:2 
问题主要出在三处,第一c为float,他接受的函数返回值也应该是float,将函数返回类型改为float.第二输出c格式错误,改为%f.第三在函数体内应该将z=x/y和z=y/x赋值表达式改为强转类型。即改为z=(float)(x/y)和z=(float)(y/x).改了这几个地方,应该就没错了吧。
2012-07-20 00:46
circlemiss
Rank: 2
等 级:论坛游民
帖 子:30
专家分:51
注 册:2012-7-19
收藏
得分:2 
补充一下强转类型后面的表达式不需要加括号了,(float)x/y和(float)y/x;我也是新手,互相学习,这也是调试出来的,这样程序的值就是1.400000.用int接受float会丢失数据的。
2012-07-20 00:55
奋斗猪
Rank: 2
来 自:奋斗的途中
等 级:论坛游民
帖 子:43
专家分:91
注 册:2012-7-4
收藏
得分:2 
果断开虚拟机在unix环境下用代码测试之
程序代码:
#include<stdio.h>
int main(void){
  int i=0;
  float f=0.0f;//主意单精度和双精度的区别在于后面的标识f
  double d=0.0;
  printf("依次输入int float double类型\n");
  scanf("%d%f%lf",&i,&f,&d);//主意在这里输入时数字间用空格或回车格开
  printf("int i=%d,float f=%f,double d=%lf\n",i,f,d);//正确的格式下的输出结果,注意对f赋值时要写成2.2f,即f不能丢
//试验更改相应的格式符来查看显示效果
  printf("int i=%f,float f=%f,double d=%lf\n",i,f,d);
}
我也刚学,感谢分享问题


[ 本帖最后由 奋斗猪 于 2012-7-21 14:59 编辑 ]

贵在坚持!
2012-07-20 06:57
caoge106
Rank: 1
等 级:新手上路
帖 子:29
专家分:5
注 册:2012-6-8
收藏
得分:1 
5楼的仁兄,我是初学者了。想问下:最后一句printf("int i=%f,float f=%f,double d=%lf\n",i,f,d);为什么int i=%f?
2012-07-20 10:51
奋斗猪
Rank: 2
来 自:奋斗的途中
等 级:论坛游民
帖 子:43
专家分:91
注 册:2012-7-4
收藏
得分:1 
回复 6楼 caoge106
给出一个错误让自己去试试。上一行有注释。

贵在坚持!
2012-07-21 15:02
快速回复:自定义函数请教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024633 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved