C++實現(xiàn)加減乘除計算器
更新時間:2022年01月28日 09:20:33 作者:多壹
這篇文章主要為大家詳細介紹了C++實現(xiàn)加減乘除計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下<BR>
本文實例為大家分享了C++實現(xiàn)加減乘除計算器的具體代碼,供大家參考,具體內(nèi)容如下
#include <iostream> #include <conio.h> #include <string> void main() { ?? ?char str[0xFF]; ?? ?do ?? ?{ ?? ??? ?system("cls"); ?? ??? ?float a{}; ?? ??? ?float b{}; ?? ??? ?int count = 1; ?? ??? ?int isOperating = -1; ?? ??? ?bool isFirst = true; ?? ??? ?std::string text{ "按任意鍵重置,繼續(xù)計算\n" }; ?? ??? ?std::cout << "------計算機------\n"; ?? ??? ?std::cout << "請輸入加減乘除:"; ?? ??? ?std::cin >> str; ?? ??? ?for (int i = strlen(str) - 1; i >= 0; i--) ?? ??? ?{ ?? ??? ??? ?float* num = isFirst ? &b : &a; ?? ??? ??? ?switch (str[i]) ?? ??? ??? ?{ ?? ??? ??? ?case '*': ?? ??? ??? ??? ?isOperating = 0; ?? ??? ??? ??? ?break; ?? ??? ??? ?case '/': ?? ??? ??? ??? ?isOperating = 1; ?? ??? ??? ??? ?break; ?? ??? ??? ?case '+': ?? ??? ??? ??? ?isOperating = 2; ?? ??? ??? ??? ?break; ?? ??? ??? ?case '-': ?? ??? ??? ??? ?isOperating = 3; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?if (!isFirst&&!isdigit(str[i])&& str[i]<=127&& str[i]>=0) ?? ??? ??? ?{ ?? ??? ??? ??? ?isOperating = 4; ?? ??? ??? ??? ?text = "暫只支持正整數(shù)加減乘除,不能輸入中文,其他符號或運算符\n按任意鍵重新輸入\n"; ?? ??? ??? ??? ?break; ?? ??? ??? ?} ?? ??? ??? ?if (isOperating != -1 && count != 1 && isFirst) ?? ??? ??? ?{ ?? ??? ??? ??? ?isFirst = false; ?? ??? ??? ??? ?count = 1; ?? ??? ??? ??? ?if (i == 0 || i == strlen(str) - 1) ?? ??? ??? ??? ?{ ?? ??? ??? ??? ??? ?isOperating = 4; ?? ??? ??? ??? ??? ?break; ?? ??? ??? ??? ?} ?? ??? ??? ??? ?continue; ?? ??? ??? ?} ?? ??? ??? ?*num += ((int)str[i] - 48) * count; ?? ??? ??? ?count *= 10; ?? ??? ?} ?? ??? ?switch (isOperating) ?? ??? ?{ ?? ??? ?case 0: ?? ??? ??? ?std::cout << "結果為:" << a * b << std::endl; ?? ??? ??? ?break; ?? ??? ?case 1: ?? ??? ??? ?if (a == 0) ?? ??? ??? ??? ?text = "除數(shù)不能為0\n按任意鍵重置,繼續(xù)計算\n"; ?? ??? ??? ?else ?? ??? ??? ??? ?std::cout << "結果為:" << a / b << std::endl; ?? ??? ??? ?break; ?? ??? ?case 2: ?? ??? ??? ?std::cout << "結果為:" << a + b << std::endl; ?? ??? ??? ?break; ?? ??? ?case 3: ?? ??? ??? ?std::cout << "結果為:" << a - b << std::endl; ?? ??? ??? ?break; ?? ??? ?default: ?? ??? ??? ?text = text == "按任意鍵重置,繼續(xù)計算\n" ? "錯誤格式,按任意鍵重新輸入\n" : text; ?? ??? ?} ?? ??? ?std::cout << text; ?? ??? ?_getch(); ?? ?} while (true); }
用string接受做太簡單了,用char數(shù)組比較好玩
#include<iostream> using namespace std; int main() { ? ?double a,b; ? ?char op; ? ?cout << "enter a" << endl; ? ?cin >> a; ? ?cout << "enter operator" << endl; ? ?cin >> op; ? ?cout << "enter b" << endl; ? ?cin >> b; ? ?double result; ? ?if (op=='+') ? ?{ ? ? ? result = a + b; ? ?} ? ?else if (op=='-') ? ?{ ? ? ? result = a-b; ? ?} ? ?else if (op=='*') ? ?{ ? ? ? result = a*b; ? ?} ? ?else if (op=='/'){ ? ? ? if (b==0){ ? ? ? ? ?cout << "cannot devided by 0\n"; ? ? ? ? ?return 0; ? ? ? } ? ? ? else{ ? ? ? ? ?result =a/b; ? ? ? } ? ?} ? ?else ? ?{ ? ? ? cout << "invalid operator\n"; ? ? ? return 0; ? ?} ? ?cout << "result is " << result << endl; ? ?return 0; }
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
C++中strlen(),sizeof()與size()的區(qū)別
本文主要介紹了C++中strlen(),sizeof()與size()的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-05-05COLORREF,COLOR,RGB,CString的轉化總結分析
實際的軟件開發(fā)過程中,常需要用到非.net平臺的代碼。這時候就可能碰到ColorRef(也就是以int類型代表的顏色值或是以DWORD值表示的顏色)。這跟.net平臺下的顏色的相互轉換MS并沒有直接實現(xiàn)2013-09-09