编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛  
 
全能 ASP / PHP / ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
 16 12
发新话题
打印

一个C程序的小问题,

复制内容到剪贴板
代码:
/*********************************************
    改后的程序,在WIN-TC下正常运行,但结果是否
正确不知道,因为我没搜过磅转斤的公式。

*********************************************/
#include <stdio.h>
#define KG_PER_POUND  0.4536
void main()
{   
    double  weight,kgn;
    printf("请输入磅数:\n");
    scanf("%lf",&weight);
    kgn=KG_PER_POUND*weight;
    printf("相对应的千数为:%f\n",kgn);

    getch();
}

/*************************************************************

ps:刚才忘说了,你在输入的时候,因为定义类型为double型,所以输入的时候
   格式应该为:%lf.

**************************************************************/
[ 本帖最后由 广陵绝唱 于 2008-5-11 23:35 编辑 ]

TOP

getch();  为什么最后来个这个.

TOP

引用:
以下是引用 走一圈 在 2008-5-11 23:36 的发言:

getch();  为什么最后来个这个.
如果你的操作系统是win98以上的,用win-tc的话要在最后加一getch();才可以看到输出的结果
我只是一只小菜鸟,有什么不对的地方请多指教~

TOP

引用:
以下是引用 走一圈 在 2008-5-11 22:41 的发言:

#include
#define KG_PER_POUND  0.4536
void main()
{   
    double weight,kgn;
    printf("请输入磅数:");
    scanf("%lf",&weight);
    kgn=KG_PER_POUND*weight;
    printf("相对应的千数为:%lf",kgn);
} ...
不需要改变宏定义的位置,原来的程序错误有三个:
1)#define KG_PER_POUND  0.4536;<-- 不能加分号,这会使得
  kgn=KG_PER_POUND*weight; 展开为kgn=0.4536;*weight; 由于weight不是指针变量,这样的引用是错误的。
2)scanf("%f",&weight); 因为weight是double,需用%lf;用%f会造成存贮格式出错,详细的请高人指点:P
3)printf("相对应的千数为:&f",kgn); &f是取得变量f的地址,但在printf中该表达式不起作用,printf中用%f指示相应变量的类型。此外,对printf而言%f和%lf是一样的,两者都指定相应的变量类型为double。--参见C-FAQ一书。

TOP

补充:
宏定义可以从任何地方开始,不过对它的使用必须是在定义之后,不能用于定义之前,这也是为什么常量宏定义置于文件头的原因。
#define 宏定义在文件末尾结束,也可以用#undef强制其提前结束。

TOP

谢谢大家的指点,小弟在此不胜感谢,,

TOP

 16 12
发新话题