當用戶想要輸入時,有什麼方法可以從用戶和用戶選擇中的任何算術運算符中輸入數字。我基本上試圖製作一種計算器,用戶首先輸入數字,最後輸入運算符以便適用。但是沒有任何修復限制,用戶將首先輸入多少個數字。它的用戶希望。我的程序本身應該猜測它是一個字符輸入還是一個整數輸入。可能嗎 ??存儲整數和算術運算符的數據類型?
回答
這只是一個簡單的算術類型編程問題的概述。
將輸入作爲字符並存儲在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