当用户想要输入时,有什么方法可以从用户和用户选择中的任何算术运算符中输入数字。我基本上试图制作一种计算器,用户首先输入数字,最后输入运算符以便适用。但是没有任何修复限制,用户将首先输入多少个数字。它的用户希望。我的程序本身应该猜测它是一个字符输入还是一个整数输入。可能吗 ??存储整数和算术运算符的数据类型?
回答
这只是一个简单的算术类型编程问题的概述。
将输入作为字符并存储在char数组缓冲区中。 然后使用strtol
可以将其转换为long int
。
另外采取运营商作为一个字符阵列,其中每个字符索引处将代表操作者。
应用switch - case
并基于这些情况(这将是运营商+
,-
等)执行您的操作。
另一种方法是infix arithmetic notations
转换为postfix notations
,并使用stacks
为,简单地解决。在这种情况下,将不与运算符优先级问题,因为您已经应用了逻辑存储运营商在堆栈,只是弹出一个由一个和执行操作。
感谢队友你解决了我的问题。感谢Omkant。 –
一个整数应该以0〜9或减号开始。
运算符应该是一个字符减号或0〜9个字符以外的字符。
以字符串形式获取输入,判断它是运算符还是整数,然后使用atoi将字符串转换为整数。
如果你有能力写一个计算器,那对你来说应该是简单的任务。
我的建议是建立一个OPP(对象优先解析器)来操作用户输入的字符串。 将输入作为字符串时,用户有权与算术运算符一起输入整个algebric方程,因为它们仅被视为字符。然后你可以把它转换成一个char数组,对它执行OPP操作。 http://code.google.com/p/expressionparser/
或者你可以做的是一个循序渐进的像数步输入,然后然后操作员号码:)
你真的不列出许多细节还是你要如何处理任何的例子,所以我无法给你更好的建议。既然你不知道的输入(数字/字符)的顺序,或量它的最好把它作为一个字符串:
char *expression_buf = NULL;
scanf("%m[^\n]", expression_buf); // grab any number of characters/digits with spaces
//do some postfix stuff
free(expression_buf);
然后你就可以弄清楚什么是数字的,什么是不:
#include <ctype.h>
isdigit(expression_buf[index])
这几乎是所有你需要的工具。然后弹出数字/运算符并按顺序应用它们。将它们放在堆叠上将有助于您按照正确的顺序将它们弹出。
让我们假设用户只能进入follwing操作格式之一:
x + y
x * y
x - y
x/y
这里后,你如何能做到这一点:
#include<stdio.h>
#include<stdlib.h>
int main() {
int x, y;
char op;
printf ("Enter your Expression The Format should be One of the following:\nx + y\nx - y\nx * y\nx/y\n");
if (scanf("%d %c %d",&x,&op,&y)<3) {
printf("Wrong Expression\n");
return 0;
}
switch (op) {
case '+':
printf("%d + %d = %d\n",x,y,x+y);
break;
case '-':
printf("%d - %d = %d\n",x,y,x-y);
break;
case '*':
printf("%d * %d = %d\n",x,y,x*y);
break;
case '/':
printf("%d/%d = %d\n",x,y,x/y);
break;
default:
printf("Invalid operator %c\n",op);
}
return 0;
}
- 1. Haskell - 数据类型的算术运算
- 2. 存储和使用算术运算符
- 3. 在vhdl整数算术运算
- 4. 算术运算符
- 5. 具有泛型类型的算术运算符(+, - ,/,*)的使用
- 6. 类型参数化算术?
- 7. C++算术类型转换与无符号&符号整数
- 8. 运算符*未定义的参数类型字符串,整数
- 9. Java运算符+未定义类型整数,整数
- 10. 计数算术运算
- 11. 类和数组运算符
- 12. 抽象类重载算术运算符
- 13. 给char类型赋一个数字做算术运算?
- 14. 为什么C#中的8位和16位整数没有算术运算符(+, - ,*,/,%)?
- 15. 存储用户输入的按位运算符的数据类型是什么
- 16. 分裂与算术运算符和函数的Java
- 17. 位运算符算术
- 18. 动态算术运算符
- 19. 推广算术运算符
- 20. 默认算术运算符
- 21. 在PHP(算术运算符)
- 22. PHP算术运算符++
- 23. 算术运算符混淆
- 24. 按位算术和运算符
- 25. 字符串和算术运算
- 26. 算术运算符和键值编码
- 27. 运算符不存在:interval>整数
- 28. java中的位运算符只用于整数和长整型?
- 29. 如何为NumPy中的算术运算指定结果数据类型?
- 30. 数据类型的文本和nvarchar是等于运算符
'用户首先会输入数字和去年的运营商适用于它 - 所以...你想处理后缀表达式? – Mike
你如何设想将操作符与数字相关联?对于输入“1 2 3 + - ”,这是否意味着(1 + 2) - 3或1 +(2-3)? – unwind