【发布时间】:2021-01-29 11:56:47
【问题描述】:
我想制作一个需要 3+4/4*6 输入的计算器,我需要用 C 编程来编写它。我将数字和操作与用户分开,然后将数字和运算符放在单独的数组中。然后我想分别循环遍历数组来执行操作-我知道不考虑运算符优先级-但它根本没有给我正确的结果。为了确定操作符,我首先使用了 switch case,然后尝试了 If 语句,但它们都给出了错误的结果。我要分享他们两个。如何重新排列此代码以获得正确的结果?
我的意思是正确的结果,例如 3+4/1*8 = 56
【问题讨论】:
-
您希望
number_in和operator_in的类型为int和char,而不是int *和char *:它们是数字,而不是指针。 (但是当你scanf你的输入时,你用&指向它们,这样scanf可以通过它们给这些数字赋值。) -
你真的应该在编译时打开警告。例如,您的
ops[x]是整数,但您将它们与字符串进行比较。用单引号替换双引号 -- 在 C 中,单引号包含字符。您可能还应该在实际计算循环中修改您的索引。 -
@MOehm 当我从 number_in 和 operator_in 中删除指针 * 并从它们的“scanf”中删除 & 时,代码搞砸了 :( 它不起作用
-
@MOehm 修复双引号谢谢
-
好吧,你应该试着理解这些运算符的作用。在编译器关闭之前随机添加和删除
*s 和&s 通常不是一个好的编程策略。此外,“它不起作用”也不能很好地描述错误。什么没有奏效?编译器抱怨了吗?程序崩溃了吗?它给出了错误的结果吗?
标签: c if-statement switch-statement calculator