引用:
以下是引用 走一圈 在 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一书。