您好,感谢您花时间阅读本文!
我试图创建一个基本的计算器,但我遇到了一些麻烦.. 计算器应该是连续的,只能使用(+, - ,*,/)操作。
Ex: Calc is on
result = 0
+2 (user input)
result = 2
*5 (user input)
result = 10
% 3 (user input)
unknown operator. Try again.
R (user input)
Final result =
Do you want to continue (Y/N)
现在我能够连续加或减(即使我认为它错了,因为即使我不输入 - 或+最后的结果将添加最新输入的数字)。 当我尝试多重或分裂时,最大的问题就来了。程序崩溃,只是不断添加。
我猜这是因为我在第一个scanf中输入了+,然后while循环只适用于那个+。我尝试了很多不同的变化,但似乎无法弄清楚!!
任何帮助或提示将不胜感激!
#include <stdio.h>
int main ()
{
double result = 0;
double new_number;
char symbol;
printf("\t\t*\t+ for [addition]\t*\n");
printf("\t\t*\t- for [subtraction]\t*\n");
printf("\t\t*\t/ for [division]\t*\n");
printf("\t\t*\t* for [multiplication]\t*\n");
printf("\t\tPress 'R' to RESET/EXIT the program");
printf("\n\n\tCalculator is ON\n");
printf("\t-------------\n\n") ;
printf("current value = %.2f\n",result);
scanf("%c", &symbol);
while (symbol != 'R')
{
scanf("%lf", &new_number);
if( symbol=='+')
{
result+=new_number;
printf("The new result is %.2f ", result);
}
else if(symbol=='-')
{
result-=new_number;
printf("The new result is %.2f ", result);
}
else if(symbol=='*')
{
result*=new_number;
printf("The new result is %.2f ", result);
}
else if(symbol=='/')
{
result/=new_number;
printf("The new result is %.2f ", result);
}
else if(symbol== 'R' || symbol== 'r')
{
printf("Final Result = %f\n ", result);
printf("Do you want to continue? (y/n)");
}
else {
printf("Not an operation of the function.\nTry again.");
}
}
return 0;
}
答案 0 :(得分:0)
BluePIXY - 您的代码刚刚运作!!非常感谢你! (现在如果有人 请解释为什么它的工作会很棒!)这是不是意味着 进入运营商是真的吗?为什么我们必须使用&amp;&amp; 而不是|| ???
它适用于BluePIXY的更改,因为现在scanf(" %c", &symbol)
是while
循环控制表达式的一部分,因此在每次执行循环体之前执行,而在原始版本中它只执行一次在进入循环之前。
您应该阅读*scanf
手册中的内容:
这些函数返回成功匹配的输入项数 分配
- 因此,返回值不会与true
进行比较,而是与1
进行比较。当然,我们必须使用&&
因为我们想要在输入字符时循环并且此字符不是'R'
。