C ++中的简单逻辑。不允许使用IF语句

时间:2014-01-22 21:30:44

标签: c if-statement int double

所以我是编程和学习C / C ++的新手。分配是创建一个简单的程序,用于计算项目的给定价格和数量的总和。我难以理解的部分是我们不允许在创建程序时使用“if或switch语句”。我们需要询问用户该项目是否应纳税,使用1表示是,0表示否。现在我有程序计算两者并读出税收和非税收。任何帮助将不胜感激,我知道这是业余和最基本的编程。

#include <stdio.h>

#define TAX_RATE 0.065
int main() {

  int item_quantity, taxable;
  float item_price, total_with_tax, total_without_tax, a, b;

  // Read in the price of the item

  printf("What is the price of the item? (Should be less than $100)\n");
  scanf("%f<100", &item_price);

  // Read in the quantity of the item being purchased

  printf("How many of the item are you purchasing? (Should be less than 100) \n");
  scanf("%d<100", &item_quantity);

  // Read in if it is taxable or not

  printf("Is the item a taxed item (1 = yes, 0 = no)?\n");
  scanf("%d", &taxable);

  // Calculate total with tax

  a = item_quantity*item_price*(1 + TAX_RATE);

  // Calculate total without tax

  b = item_quantity*item_price;

  printf("Your total purchase will cost $%.2f\n", a);

  printf("Your total purchase will cost $%.2f\n", b);

  return 0;

}

4 个答案:

答案 0 :(得分:7)

因此taxable01。现在看看这两行之间的相似性:

a = item_quantity*item_price*(1 + TAX_RATE);
b = item_quantity*item_price;

如何使用taxable的值创建这一行,以便它在taxable1时第一行执行的操作以及taxable时第二行执行的操作{1}}是0?哪个位需要改变?你怎么能做到这一点?

既然这是你的任务,我认为这已经足够了解。


你好像在挣扎。好的,请考虑以下与上述两行完全相同的行:

a = item_quantity*item_price*(1 + TAX_RATE);
b = item_quantity*item_price*(1);

他们之间有什么区别?有些东西消失了。什么是使用基本数学运算符使某些东西消失的简单方法?

答案与C ++的任何特殊内容无关。这只是数学!

答案 1 :(得分:1)

在没有ifswitch声明的情况下做出决策的最常见选项是&&(“和”运算符),||(“或”运算符), ?:(三元运算符)和*(乘法运算符)。

答案 2 :(得分:0)

如果用户给你0,你必须找到一种方法来否定TAX_RATE。这是一个简单的数学运算,我们试图提示你。

答案 3 :(得分:0)

U可以更改公式:

a = item_quantity * item_price *(1 + TAX_RATE);

在等式中添加应税变量,使得当taxable为0时,

等式变为:

a = item_quantity * item_price