C 我错在哪里?我不知道';我们得不到预期的产出
我试着根据问题来编写代码。但我面临着取整问题。谁能解释一下我在哪里面对这个问题吗 M=12,T=20,X=8 tip=(20×12)/100=2.4 tax=(8×12)/100=0.96最终值 价格=12+2.4+0.96=15.36正式来说,这顿饭的价格是15.36美元, 但是四舍五入到最近的 美元(整数),这顿饭是15美元 以下是我的完整代码:C 我错在哪里?我不知道';我们得不到预期的产出,c,rounding,C,Rounding,我试着根据问题来编写代码。但我面临着取整问题。谁能解释一下我在哪里面对这个问题吗 M=12,T=20,X=8 tip=(20×12)/100=2.4 tax=(8×12)/100=0.96最终值 价格=12+2.4+0.96=15.36正式来说,这顿饭的价格是15.36美元, 但是四舍五入到最近的 美元(整数),这顿饭是15美元 以下是我的完整代码: #include <stdio.h> #include <string.h> #include <math.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int t, x;
double m;
scanf("%lf", &m);
scanf("%d", &t);
scanf("%d", &x);
double tip, tax;
tip= m*t/100;
tax= t*x/100;
int total= (int)(round( tip + tax +m ));
printf("The final price of the meal is $%d.", total);
return 0;
}
#包括
#包括
#包括
#包括
int main(){
int t,x;
双m;
扫描频率(“%lf”和&m);
scanf(“%d”、&t);
scanf(“%d”和&x);
双倍小费,税金;
尖端=m*t/100;
税=t*x/100;
整数总计=(整数)(四舍五入(小费+税金+m));
printf(“膳食的最终价格为$%d.”,总计);
返回0;
}
当我输入15.91,15,10
时,它显示的是输出19
,而不是20
我在哪里犯了错误 当你这样做时tax=t*x/100代码>
您正在进行整数除法,因此将对其进行四舍五入
您将拥有15*10/100=1,而不是1.5
另外,当您提出问题时,您使用的是t*x
,而不是m*x
M=12, T=20, X=8
tip=(20×12)/100=2.4
T M
tax=(8×12)/100=0.96
X M
换成
tip=m*t/100.0;
税=m*x/100.0代码>
你会得到预期的20作为最终结果为什么税是以t而不是m计算的?不,这不是你的完整代码。t
和x
没有申报。我把它输入我的计算器,发现tip+tax+m
是192965。请注意,tax=t*x/100
是一个整数运算,四舍五入为1。正如@Jack已经提到的。似乎tax=t*x/100代码>应为tax=m*x/100代码>。这将得到预期的<代码> 20美元<代码>结果。请考虑输入<代码> 12 20×8 /代码>输出将是<代码> 15 < /代码>,但您的代码显示“代码> 16 < /代码>。您编写代码的方式只会通过一个测试用例,但在其他测试用例中会失败。不,这是错误的。因为m
、t
和x
被定义为double
,所以除法将是浮点运算,即使没有100.0
,我也实现了java和python的相同逻辑,而且它工作得很好。但它显示了错误的输出C@CraigEsteyt
和x
都是int
,我和她一起测试了第一个例子,得到了1而不是1.5你是正确的100
[仅]适用于tip
,但为了保持一致性,最好使用100.0
。我也进行了测试,但[错误地]到处都使用了double
。