ljt12138 ljt12138
关注数: 4 粉丝数: 43 发帖数: 1,580 关注贴吧数: 49
c++支持运算符优先级的四则运算+注释(大神绕道) 不知为啥大家初学时都喜欢写计算器...可能是简单吧。。我一开始用goto写计算器,几百行代码,还不如现在30行。。说多了都是泪啊。。好了言归正传。。 鉴于贴吧美(can)轮(bu)美(ren)奂(du)的格式,缩进用"_"代替,勿喷,轻点拍砖。 #include<iostream> #include<vector> //stl中的动态数组(也可以用普通数组,但内存不划算),下面详解 using namespace std; //不说了吧。。 int main(){ ___vector<double> add; //创建double型动态数组,命名为add ___double i;//操作数 ___char f='+';//符号 ___bool first=true;//这个为了开头省打"+" ___while (1){ _____if (!first) _______cin >> f; //若非开头,输入符号 _____if (f!='=') _______cin >> i; //若非结尾("="),输入操作数 _____else _______break; //若为结尾,退出 _____switch (f){ //加法直接压入add _______case '+': _______add.push_back(i); //vector.push_back(i) 向数组末尾插入一个i,数组长度自动+1 _______break; //减法-i压入add(看成多项式相加) _______case '-': _______add.push_back(-i); _______break; //若为乘,除法对数组内最后一个数运算 _______case '*': _______add[add.size()-1]*=i; //vector.size()获取数组长度 //这里解释下为啥是-1,size()给出长度,但数组是从add[0]开始的。 _______break; _______case '/': _______add[add.size()-1]/=i; _______break; ___} ___first=false; //第一次运算后否定 __} __i = 0; __for (int t=0; t<add.size(); t++) _____i += add[t]; //把add中的数加起来并输出,完了 __cout << i; __return 0; }
1 下一页