c-警告:格式"%f"需要类型为"float"的参数,但参数2的类型为"



每个人。我需要帮助!我试图提交以下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);

相关内容

  • 没有找到相关文章

最新更新