鱼C论坛

 找回密码
 立即注册
查看: 2970|回复: 19

求大佬讲解

[复制链接]
发表于 2022-5-12 23:00:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 宇与鱼 于 2022-5-12 23:05 编辑

找了好久不知道原因所在 5/2应该等于2.500000
#include<stdio.h>
main()
{
  int a,b,c;
  float d;
  char op;
  scanf("%c",&op);
  scanf("%d%d",&a,&b);
  switch(op)
  {
  case '/':d=chu(a,b);printf("%d%c%d=%f",a,op,b,d);break;
  default :printf("输入错误");break;
  }
}

float chu(int a,int b)
{
  float d;
  d=a/(float)b;
  return (d);
}

运行结果

运行结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-12 23:03:50 | 显示全部楼层
把问题说出来,不要让别人去猜你遇到了什么问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-12 23:04:53 | 显示全部楼层
isdkz 发表于 2022-5-12 23:03
把问题说出来,不要让别人去猜你遇到了什么问题

5/2应该等于2.500000
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 23:09:11 | 显示全部楼层
本帖最后由 isdkz 于 2022-5-12 23:12 编辑
宇与鱼 发表于 2022-5-12 23:04
5/2应该等于2.500000


我这里执行没有问题
34.PNG

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-12 23:11:18 | 显示全部楼层
isdkz 发表于 2022-5-12 23:09
我这里执行没有问题

难道是编译器的问题吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 23:12:31 | 显示全部楼层
宇与鱼 发表于 2022-5-12 23:11
难道是编译器的问题吗?

不知道,不过代码我改了一下才执行的,

我在 dev c++ 里执行,chu 函数放后面不先声明执行不了,vc++ 可以?

  1. #include<stdio.h>
  2. float chu(int a, int b);                             // 加了这个
  3. main()
  4. {
  5.   int a,b,c;
  6.   float d;
  7.   char op;
  8.   scanf("%c",&op);
  9.   scanf("%d%d",&a,&b);
  10.   switch(op)
  11.   {
  12.   case '/':d=chu(a,b);printf("%d%c%d=%f",a,op,b,d);break;
  13.   default :printf("输入错误");break;
  14.   }
  15. }

  16. float chu(int a,int b)
  17. {
  18.   float d;
  19.   d=a/(float)b;
  20.   return (d);
  21. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 23:13:14 | 显示全部楼层


我更离谱,1.0000 了....

1.jpg

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 23:14:01 | 显示全部楼层
Twilight6 发表于 2022-5-12 23:13
我更离谱,1.0000 了....


哈哈哈哈哈哈,看来确实很离谱

评分

参与人数 1荣誉 +2 鱼币 +3 贡献 +3 收起 理由
Twilight6 + 2 + 3 + 3 哈哈

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 23:14:48 | 显示全部楼层
isdkz 发表于 2022-5-12 23:12
不知道,不过代码我改了一下才执行的,

我在 dev c++ 里执行,chu 函数放后面不先声明执行不了,vc++  ...



你这个我执行也是 2.50000

1.jpg


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 23:15:38 | 显示全部楼层
Twilight6 发表于 2022-5-12 23:14
你这个我执行也是 2.50000

哦哦,那你们的不先声明怎么能执行的?我的执行不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-12 23:17:10 | 显示全部楼层
isdkz 发表于 2022-5-12 23:12
不知道,不过代码我改了一下才执行的,

我在 dev c++ 里执行,chu 函数放后面不先声明执行不了,vc++  ...

你这个我也可以执行成功了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-5-12 23:17:24 | 显示全部楼层
isdkz 发表于 2022-5-12 23:15
哦哦,那你们的不先声明怎么能执行的?我的执行不了



不懂哈哈,我用的是 Vs2022,没学 C,Vs 下载来吃灰的

也就逛论坛用用回答一些和 java 很像的问题

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 23:18:12 | 显示全部楼层
Twilight6 发表于 2022-5-12 23:17
不懂哈哈,我用的是 Vs2022,没学 C,Vs 下载来吃灰的

也就逛论坛用用回答一些和 java 很像的问题 ...

好吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 23:20:23 | 显示全部楼层
宇与鱼 发表于 2022-5-12 23:17
你这个我也可以执行成功了

ok,那应该是因为你没有声明的问题,如果函数调用在定义之前,记得先声明哦,

在主函数里面声明也行,只要是在调用之前声明就好,如果 chu 函数定义在主函数之前(准确地说是调用之前)

就不需要另外声明
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-12 23:20:28 | 显示全部楼层
isdkz 发表于 2022-5-12 23:12
不知道,不过代码我改了一下才执行的,

我在 dev c++ 里执行,chu 函数放后面不先声明执行不了,vc++  ...

c语言不是先执行主函数吗,main放在哪里应该都一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 23:32:47 | 显示全部楼层
宇与鱼 发表于 2022-5-12 23:20
c语言不是先执行主函数吗,main放在哪里应该都一样

C我也不是很懂,不过C里面的对象不都是要先声明后使用的吗?

代码执行的时候应该还是从上往下读的吧,只是把主函数作为入口执行而已,

应该大概就是先提前给这个对象预留一个内存地址,也好在后面的执行过程中知道有这么一个东西,

如果函数定义在主函数前面的话,执行主函数的时候就已经知道有这么一个函数了,就不需要另外声明,

函数定义在主函数后面,你还要提前声明一下,告诉它有这么一个函数,

你可以看一下这些参考文章:

https://blog.csdn.net/qq_44857137/article/details/101791179

https://zhuanlan.zhihu.com/p/375645259
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 23:36:42 | 显示全部楼层
本帖最后由 isdkz 于 2022-5-12 23:38 编辑
宇与鱼 发表于 2022-5-12 23:20
c语言不是先执行主函数吗,main放在哪里应该都一样


就是因为它先执行主函数,如果在主函数之后定义这个函数的话,主函数执行的时候不知道有这么一个函数,

所以要先提前声明一下,告诉它有这么一个函数,如果是在主函数之前就定义了,那它早就知道有这么一个函数,就不需要另外声明了

我的理解是这样的,C 我也不是很懂,你可以在网上找找看:

https://blog.csdn.net/qq_44857137/article/details/101791179

https://zhuanlan.zhihu.com/p/375645259
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 23:39:01 | 显示全部楼层
函数chu 要放在main前面。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-13 08:59:47 | 显示全部楼层
  1. d=(float)a/(float)b;/////试试都强制转换
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-13 16:31:09 | 显示全部楼层
你得先声明chu这个函数,或者你也可以把chu这个函数写main前面,这个是作用域的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-4 12:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表