C 为什么这段代码会绕过最终答案?
您的程序应该要求用户输入一盒果汁的价格以及购买的纸箱数量。请注意,由于果汁是一种普通的食品,因此不征收销售税 然后,根据BOGO报价确定购买橙汁的最终成本C 为什么这段代码会绕过最终答案?,c,C,您的程序应该要求用户输入一盒果汁的价格以及购买的纸箱数量。请注意,由于果汁是一种普通的食品,因此不征收销售税 然后,根据BOGO报价确定购买橙汁的最终成本 int main() { //variables int carton, total; float cost; printf("What is the cost of one container of OJ in dollars?\n"); scanf("%4f", &co
int main() {
//variables
int carton, total;
float cost;
printf("What is the cost of one container of OJ in dollars?\n");
scanf("%4f", &cost);
printf("How many containers are you buying?\n");
scanf("%d", &carton);
if (carton % 2 == 0) {
total = (carton / 2) * cost;
} else {
total = (carton % 2) * cost + (carton - 1 / 2) * cost;
}
//output
printf("The total cost is $%d", total);
return 0;
}
你只需在分开纸箱之前将纸箱打成漂浮状态。通过这种方式,您还可以使用模数(%)运算符,因为它实际上是一个整数,您还可以通过将其键入浮点来将其除以2。首先,如果您希望您的
total
是一个浮点数,而不是“四舍五入”,因为您要将其转换为int
,那么您必须将其声明为float
。
另外,代码中还有一些计算,因为使用整数,所以得到的结果是出乎意料的。(例如,纸箱-1/2)
。我强烈建议您将所有3个变量都更改为浮动
第二,你在最后一行写道:
printf(“总成本为$%d”,总计);
用于整数%d
用于浮点数%f
%d
操作时,您就是在铸造它。这意味着它与执行(int)total
相同,因为整数只是整数,所以您的total
也将是一个整数
长话短说。。如果您不希望total
被“四舍五入”,请使用以下方法:
intmain(){
//变数
浮箱,成本,总计;
printf(“一个OJ集装箱的成本是多少美元?\n”);
scanf(“%4f”和成本);
printf(“您要购买多少个集装箱?\n”);
scanf(“%f”和纸箱);
如果(纸箱%2==0){
总计=(纸箱/2)*成本;
}
否则{
总计=(纸箱%2)*成本+(纸箱-1/2)*成本;
}
//输出
printf(“总成本为$%f”,总计);
返回0;
1/2
在整数算术中是0。将所有单位转换为浮点。合计应该是浮点,不是吗?如果我将carton转换为float,则carton%2==0不起作用,如果commna不在金融交易中使用float。float的行为与人类期望数字的行为不同-它们的行为与计算机科学家/工程师的经验相同t表示可接受数字的近似算法。在许多国家,法律上通常不允许您以浮动的方式计算货币。请使用int,但在内部将您的货币表示为美分(或者按照您所在国家的法律要求,甚至0.01美分).在显示时手动向值添加小数点,但在内部将所有内容存储为int