鱼C论坛

 找回密码
 立即注册
查看: 2583|回复: 5

求解释

[复制链接]
发表于 2014-5-23 10:40:50 | 显示全部楼层 |阅读模式
2鱼币
为什么我一步一步运行,b的值都是整型求解释
QQ截图20140523003727.png

最佳答案

查看完整内容

在注释中解释了。。。。。。希望对你有所帮助,欢迎加Q群:157379587
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-5-23 10:40:51 | 显示全部楼层
在注释中解释了。。。。。。希望对你有所帮助,欢迎加Q群:157379587
  1. #include <stdio.h>

  2. int main()
  3. {
  4.         /*
  5.         int i,a[20];
  6.         float b,sum=0;
  7.         a[0]=1;
  8.         a[1]=1;
  9.         for(i=2;i<20;i++)  //i!=20
  10.         {
  11.                 a[i]=a[i-1]+a[i-2];
  12.                 b=a[i]/a[i-1];                //a[i]是int型的,这里a[i]/a[i-1]结果为int型,(失去了精度)
  13.                 sum=sum+b;                        //然后它赋值给b,转换成了float型 (NOTE:没有计算a[1]/a[0] )
  14.         }
  15.         printf("%f",sum);
  16.         return 0;
  17.         */
  18.        
  19.         //-=----修改如下--------
  20.         int i;
  21.         float b,sum=0.0,a[20];
  22.         a[0]=1.0;
  23.         a[1]=1.0;
  24.         for(i=2;i<20;i++)
  25.         {
  26.                 a[i]=a[i-1]+a[i-2];
  27.                 b=a[i]/a[i-1];       
  28.                 sum=sum+b;                         
  29.         }
  30.         printf("%f",sum);
  31.         return 0;
  32. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-5-23 12:44:43 | 显示全部楼层
  1. #include<stdio.h>
  2. int main( void )
  3. {
  4.         int i, pre, rear, temp;
  5.         float b, sum = 0;

  6.         pre = rear = 1;
  7.         for( i = 2; i <= 20; i++ )
  8.         {
  9.                 temp = pre + rear;
  10.                 b = 1.0 * temp / rear;  // 1.0 隐式转换类型
  11.                 sum += b;
  12.                 pre = rear;
  13.                 rear = temp;
  14.         }
  15.         printf("%f\n", sum );
  16.         return 0;
  17. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-5-23 18:35:21 | 显示全部楼层
应为 int a[20];
其余的不解释了吧
就是丢失精度的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-5-23 21:31:25 | 显示全部楼层
for裡面應該是 i<20 才對, 其他的不解釋
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-5-23 21:40:01 | 显示全部楼层
本帖最后由 oggplay 于 2014-5-23 22:09 编辑

自己改改,简单调试:titter:,你应该能看出问题所在!

  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.   int i,a[20];
  5.   double b,sum=0;
  6.   a[0]=1;
  7.   a[1]=3;
  8.   for (i=2;i<=20;i++)
  9.     {
  10.          a[i]=a[i-1]+a[i-2];
  11.          b=(a[i]/a[i-1]);
  12.          sum=sum+b;
  13.          printf("a[%d]=%d",i,a[i]);
  14.          printf(" b=%lf",b);     
  15.          printf(" sum=%lf\n",sum);
  16.          printf("\n");  
  17.     }        

  18.   
  19.    return 0;
  20. }

复制代码
8.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 23:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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