永发信息网

数据类型转换

答案:3  悬赏:0  手机版
解决时间 2021-04-27 06:13

 今有四个水渠,分别记为a,b,c,d,可以向一个水渠中注水,下表为单开一个水渠注满水所用的时间:

 

单开一个水渠

注满水池的天数

单开一个水渠

注满水池的天数

a

3

c

4

b

1

d

5

问:

                        i.              如果a,b两个水渠共识注水需要多少时间?

                      ii.              如果a,b,c,d,同时注水,需要多少时间注满?

(原自九章算术)

分析:

由数学知识可以知道,两个水渠同时注水所需要的时间为: ,而四个水渠同时注满所需要的时间为:

因而很用以可以得到:

main()

{

      int a=3,b=1,c=4,d=5;

   float a2,b2,c2,d2,x,y;

      a2=1/a;

      b2=1/b;

      c2=1/c;

      d2=1/d;

      x=1/(a2+b2);

      y=1/(a2+b2+c2+d2);

      printf(“a----b:%.2f day\n a----d:%.2f day\n”,x,y);

}

结果发现不正确,原因就是在于数据计算的时候,如果a=3取为整形,计算1/a是必须做类型转换,否则1/a就为0。因此程序应该为:

main()

{

      int a=3,b=1,c=4,d=5;

   float a2,b2,c2,d2,x,y;

      a2=1/(float)a;

      b2=1/(float)b;

      c2=1/(float)c;

      d2=1/(float)d;

      x=1/(a2+b2);

      y=1/(a2+b2+c2+d2);

      printf(“a----b:%.2f day\n a----d:%.2f day\n”,x,y);

}

 

加粗部分,上课老师说了,又忘了,看不懂了。。。

最佳答案

c语言中/号运算,如果除数和被除数都是int整数,那结果会去掉小数部分取整。想要不取整只要把其中一个变为小数类型即可。

全部回答
因为 a是整形 所以 1/a的值也会是整形 0;但是, (float)a 是把整形a 变为float类型a,所以 1/a也将是float类型,而不会是0.
a=3取为整形,计算1/a是必须做类型转换,否则1/a就为0所以必须进行数据类型的转换,把a强制转换成浮点型的。你们老师说得很正确,还有什么疑问吗?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
泡泡堂密码错误
mc梦桐就是个骗子?我在快手上加她微信说跟她
如果会计交接后出现以前的问题而双方在交接单
请问中空玻璃双道密封是什么意思?
作文急急急急
天龙八部游戏好玩吗?
手机qq和3gqq哪个用的流量多
水瓶座女孩会把爱情看的太重吗。
深圳几时开放的?
魔兽世界会不会被网易给搅黄了??永远开不了
家里停电了怎么办?
买美国PSP选什么好
林俊杰,还会迈向影视圈吗?
qq飞车怎么点亮?啊啊啊
怎么练习CF瞬镜 闪狙?鼠标速度多少最适合?
推荐资讯
国内香薰行业比较资历的香薰公司是哪家
请问有什么办法能在两个星期间快速瘦腿的?
cf卡箱子卡近一半之后,怎么全身进去
泉镜花服饰怎么去啊,有知道地址的么
发电机的原理是?
我Q十级了还得多长时间才能升太阳啊
八哥什么时候开始采取保暖措施?
会计中的四表一注是什么意思?是指哪些?
绮丽在什么地方啊,我要过去处理事情
13:45意思是什么?
和女朋友分手半年了,依然很爱她,怎么追回她
抢车位
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?