Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么这段代码会绕过最终答案?_C - Fatal编程技术网

C 为什么这段代码会绕过最终答案?

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

您的程序应该要求用户输入一盒果汁的价格以及购买的纸箱数量。请注意,由于果汁是一种普通的食品,因此不征收销售税

然后,根据BOGO报价确定购买橙汁的最终成本

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