LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 775|回复: 3

double和float的问题,谢谢!:)

[复制链接]
发表于 2005-4-20 20:33:41 | 显示全部楼层 |阅读模式

  1. /*计算直角三角形的斜边*/
  2. #include <math.h>
  3. double xiebian(double zhibian1,double zhibian2)
  4. {
  5.     return(sqrt(zhibian1*zhibian1+zhibian2*zhibian2));
  6. }
  7. main()
  8. {
  9.     double b1[3],b2[3];/*这里用double定义的数组*/
  10.     int i,j;
  11.     printf("please enter the long:\n");
  12.     for(i=0;i<3;i++)
  13.         scanf("%f%f",&b1[i],&b2[i]);
  14.     printf("%s%20s%20s%20s\n","直角三角形","直角边1","直角边2","斜边长");
  15.     for(j=1;j<4;j++)
  16.     {
  17.         printf("%d%25.3f%17.3f%18.3f",j,b1[j-1],b2[j-1],xiebian(b1[j-1],b2[j-1]));
  18.         printf("\n");
  19.     }
  20. }
复制代码

  1. [fydream@fydream c语言]$ gcc -lm -o fydream exercise5-15.c
  2. exercise5-15.c:20:10: warning: no newline at end of file
  3. [fydream@fydream c语言]$ ./fydream
  4. please enter the long:
  5. 3 4
  6. 4 5
  7. 5 6
  8. 直角三角形          直角边1          直角边2           斜边长
  9. 1                    0.000            0.000             0.000
  10. 2                    0.000            0.000             0.000
  11. 3                    0.000            0.000             0.000
  12. [fydream@fydream c语言]$  
复制代码

但是我把定义数组的类型改成float就没有问题了:

  1. /*计算直角三角形的斜边*/
  2. #include <math.h>
  3. double xiebian(double zhibian1,double zhibian2)
  4. {
  5.     return(sqrt(zhibian1*zhibian1+zhibian2*zhibian2));
  6. }
  7. main()
  8. {
  9.     float b1[3],b2[3];/*这里和上面那个区分,这里改为float类型就很正常了,为什么?*/
  10.     int i,j;
  11.     printf("please enter the long:\n");
  12.     for(i=0;i<3;i++)
  13.         scanf("%f%f",&b1[i],&b2[i]);
  14.     printf("%s%20s%20s%20s\n","直角三角形","直角边1","直角边2","斜边长");
  15.     for(j=1;j<4;j++)
  16.     {
  17.         printf("%d%25.3f%17.3f%18.3f",j,b1[j-1],b2[j-1],xiebian(b1[j-1],b2[j-1]));
  18.         printf("\n");
  19.     }
  20. }  
复制代码

  1. [fydream@fydream c语言]$ gcc -lm -o fydream exercise5-15.c
  2. exercise5-15.c:20:10: warning: no newline at end of file
  3. [fydream@fydream c语言]$ ./fydream
  4. please enter the long:
  5. 3 4
  6. 4 5
  7. 5 6
  8. 直角三角形          直角边1          直角边2           斜边长
  9. 1                    3.000            4.000             5.000
  10. 2                    4.000            5.000             6.403
  11. 3                    5.000            6.000             7.810
  12. [fydream@fydream c语言]$
复制代码

请问这是为什么?难道是gcc的原因,还是我的那里有错误呀?情指教,谢谢!
发表于 2005-4-20 21:13:20 | 显示全部楼层

  1. /*计算直角三角形的斜边*/
  2. #include <math.h>
  3. double xiebian(double zhibian1,double zhibian2)
  4. {
  5.     return(sqrt(zhibian1*zhibian1+zhibian2*zhibian2));
  6. }
  7. main()
  8. {
  9.     double b1[3],b2[3];/*这里用double定义的数组*/
  10.     int i,j;
  11.     printf("please enter the long:\n");
  12.     for(i=0;i<3;i++)
  13.         scanf("%f%f",&b1[i],&b2[i]);
  14.     printf("%s%20s%20s%20s\n","直角三角形","直角边1","直角边2","斜边长");
  15.     for(j=1;j<4;j++)
  16.     {
  17.         //f的前面要加上'l'(注意,这个不是一)才能输出double型的:
  18.      //printf("%d%25.3lf%17.3lf%18.3lf",j,b1[j-1],b2[j-1],xiebian(b1[j-1],b2[j-1]));
  19.         printf("%d%25.3f%17.3f%18.3f",j,b1[j-1],b2[j-1],xiebian(b1[j-1],b2[j-1]));
  20.         printf("\n");
  21.     }
  22. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-4-21 13:20:30 | 显示全部楼层
是lf而不是f
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-22 17:51:27 | 显示全部楼层
偶,知道了,原来是用lf控制呀,谢谢兄弟,
一句感慨:盗版图书害死人呀!!
回复 支持 反对

使用道具 举报

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

本版积分规则

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