每个人。我需要帮助!我试图提交以下HackerBank的挑战:任务给定一顿饭的餐价(基本成本(、小费百分比(作为小费添加的餐价百分比(和税百分比(作为税添加的餐费百分比(,查找并打印该顿饭的总成本。将结果四舍五入到最接近的整数
#include <stdio.h>
#include <math.h>
int main()
{
int tax,tip;
double mealc;
scanf("%f",&mealc);
scanf("d",&tip);
scanf("%d",&tax);
mealc = mealc+(mealc*tip/100))+(mealc*tax/100);
printf ("%d",round(mealc));
return 0;
}
编译完上面的代码之后。我总是收到这些错误:
Hk2.c:33:9: warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘double *’ [-Wformat=]
Hk2.c:37:11: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘double’ [-Wformat=]
问题出在哪里?
将mealc更改为float。在你的第二次扫描中,你错过了一个%:scanf("%d",&tip(;
因为警告消息说转换说明符%f
被指定为float
类型而不是double
类型的对象的输入值。
要输入类型为double
的对象的值,需要使用转换说明符%lf
。
scanf("%lf",&mealc);
此外,你在这个呼叫中有一个拼写错误
scanf("d",&tip);
你需要写
scanf("%d",&tip);
在这份声明中,
mealc = mealc+(mealc*tip/100))+(mealc*tax/100);
有一个多余的右括号。你需要写
mealc = mealc+(mealc*tip/100)+(mealc*tax/100);