朔方血 发表于 2019-6-20 17:11:29

常量宏定义 课后作业最后一题 求大神解惑

newu 发表于 2019-6-20 17:31:53

#define是宏定义,在编译器编译阶段会将标号处替换为宏定义的值,

比如拿printf("%s", XM);来说,XM被替换为一个表达式,这个表达式计算后在这里并不是一个字符串,故会报错

朔方血 发表于 2019-6-20 17:40:16

newu 发表于 2019-6-20 17:31
#define是宏定义,在编译器编译阶段会将标号处替换为宏定义的值,

比如拿printf("%s", XM);来说,XM被替 ...

那可以怎么改呢?
{:10_282:}

TOP_LK 发表于 2019-6-20 17:45:55

把%s换成%f试一下

le1314 发表于 2019-6-20 23:31:13

#include <stdio.h>

#define FANQIE 3.7
#define JINLAN 7
#define XIQIN 1.3
#define KONGXINCHA 8
#define YANGCONG 2.4
#define YOUCAI 9
#define HUANGGUA 6.3
#define BAILUOBO 0.5
int main()

{
        double price ;// float 和double 都行,一般用double ,如果声明float ,系统会自动变为double
        price=(2*FANQIE+1*KONGXINCHA+1*YOUCAI)*0.5;
        printf("小明需要支付%.2f元\n",price );   //这里计算支付的价格,保留2位小数,所以用浮点型

        price=(3*XIQIN+0.5*YANGCONG+5*HUANGGUA)*0.5;
        printf("小红需要支付%.2f元\n",price );

        price=(10*HUANGGUA+20*BAILUOBO)*0.5;
        printf("小甲鱼需要支付%.2f元\n",price );
        return 0;


}

le1314 发表于 2019-6-21 00:25:57

#include <stdio.h>

#define F 3.7
#define J 7
#define X 1.3
#define K 8
#define YCONG 2.4
#define YCAI 9
#define H 6.3
#define B 0.5
#define XM (2*F+K+YCAI)*0.5
#define XH (3*X+0.5*YCONG+5*H)*0.5
#define XJY (10*H+20*B)*0.5

int main()

{
       
       
        printf("小明需要支付%.2f元\n",XM );   


        printf("小红需要支付%.2f元\n",XH );

       
        printf("小甲鱼需要支付%.2f元\n",XJY);
       


}

隔壁家的杰瑞 发表于 2019-6-21 11:04:26

#include <stdio.h>

#define F 3.7
#define J 7
#define X 1.3
#define K 8
#define YC 2.4
#define Y 9
#define H 6.3
#define B 0.5

#define XM 2*F+K+Y
#define XH 3*X+0.5*YC+5*H
#define XJY 10*H+20*B

int main()

{


      printf("小明需要支付%.2f元\n",XM );


      printf("小红需要支付%.2f元\n",XH );


      printf("小甲鱼需要支付%.2f元\n",XJY);



}

echohah 发表于 2019-6-25 12:14:12

把全部printf里的%s换成%f就行
页: [1]
查看完整版本: 常量宏定义 课后作业最后一题 求大神解惑