关于c++:简单计算器字符数字转化

37次阅读

共计 2567 个字符,预计需要花费 7 分钟才能阅读完成。

简略计算器

读入一个只蕴含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
Input
测试输出蕴含若干测试用例,每个测试用例占一行,每行不超过 200 个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有 0 时输出完结,相应的后果不要输入。
Output
对每个测试用例输入 1 行,即该表达式的值,准确到小数点后 2 位。
Sample Input
1 + 2
4 + 2 * 5 – 7 / 11
0
Sample Output
3.00
13.36

//#include<iostream>
//#include<algorithm>
//#include<string>
//#include<string.h>
//#include<cstdio>
//#include<queue>
//#include<stack> 
//#include<set> 
//#include<vector> 
//using namespace std;
//int main(){
//    double num;
//    stack<double> st;
//    while(cin >> num){
//        char ch;
//        ch = getchar();// 吃掉第一个数前面空格
//        if(ch != ' ' && num == 0){// 如果第一个数前面什么都没有,空格也没有,证实只有 1 个零完结循环 
//            break; 
//        }
//        st.push(num);
//        double n;
//        char c,s;
//        while(scanf("%c %lf%c",&c,&n,&s) != EOF){// 把第一个数前面四位(空格也算)当做一个整体,一直循环输出 
//            if(c == '+'){//                st.push(n);
//            }else if(c == '-'){//                st.push(-1*n);// 把负号与数一起入栈,这样就都为正,前面要计算栈外面的值只用相加就行 
//            }else if(c == '*'){//                st.top() *= n;// 将栈顶元素与以后输出的值相乘,而后作为新的栈顶元素 
//            }else if(c == '/'){//                st.top() /= n;
//            } 
//            if(s != ''){// 如果最初一位不是空格(空或换行符'\n'),阐明数据输出实现,完结循环 
//                break;
//            }
//        }
//        double sum;
//        sum = 0.00;
//        while(!st.empty()){//            sum += st.top();// 将栈中各个元素从栈顶开始相加并出栈
//            st.pop(); 
//        }
//        printf("%.2f\n",sum);
//    }
//    return 0;
//} 

A + B

读入两个小于 100 的正整数 A 和 B, 计算 A +B.
须要留神的是:A 和 B 的每一位数字由对应的英文单词给出.

输出
测试输出蕴含若干测试用例, 每个测试用例占一行, 格局为 ”A + B =”, 相邻两字符串有一个空格距离. 当 A 和 B 同时为 0 时输出完结, 相应的后果不要输入.

输入
对每个测试用例输入 1 行, 即 A + B 的值.

样例输出 Copy
one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
样例输入 Copy
3
90
96

//#include<iostream>
//#include<algorithm>
//#include<string>
//#include<string.h>
//#include<cstdio>
//#include<queue>
//#include<stack> 
//#include<set>
//#include<map> 
//#include<vector> 
//using namespace std;
//int main(){
//    map<string,int>num;
//    num["one"] = 1;
//    num["two"] = 2;
//    num["three"] = 3;
//    num["four"] = 4;
//    num["five"] = 5;
//    num["six"] = 6;
//    num["seven"] = 7;
//    num["eight"] = 8;
//    num["nine"] = 9;
//    num["zero"] = 0;
//    string s;
//    while(cin >> s){
//        int a = 0;
//        int b = 0;
//        while(s != "+"){// 当 + 号后面多个字符时,先进行计算 
//            a = a * 10 + num[s];
//            cin >> s;
//        }
//        while(s != "="){// 当 = 号后面多个字符时,先进行计算 
//            b = b * 10 + num[s];
//            cin >> s; 
//        }
//        if(a == 0 && b == 0){
//            break;
//        }
//        cout << a + b << endl;
//    }
//    return 0;
//}

对称平方数 1

打印所有不超过 256,其平方具备对称性质的数。如 2,11 就是这样的数,因为 2 2=4,1111=121。

输出
无任何输出数据

输入
输入具备题目要求的性质的数。如果输入数据不止一组,各组数据之间以回车隔开。

//#include<iostream>
//#include<algorithm>
//#include<string>
//#include<string.h>
//#include<cstdio>
//#include<queue>
//#include<stack> 
//#include<set>
//#include<map> 
//#include<vector> 
//using namespace std;
//int main(){//    for(int i = 0; i < 256; i++){
//        int num,t = 0;// t 是数组下标 
//        int temp[20];// 用来存组成 num 这个数的各个数字的数组 
//        num = i * i;// 求得这个数 
//        while(num){// 循环求组成 num 的 个十百千位上的各个数字存在数组中 
//            temp[t++] = num % 10;
//            num /= 10;
//        } 
//        int flag = 1;
//        for(int j = 0; j < t/2; j++){// 判断 temp 数组是否对称,判断一半就够了 
//            if(temp[j] != temp[t - 1 - j]){// 从 0 开始,故最初一位为 t - 1
//                flag = 0;// 对称地位两个数不相等,则置 flag 为 0  
//                break;
//            } 
//        }
//        if(flag == 1){
//            cout << i << endl;
//        } 
//    }
//    return 0;
//} 

正文完
 0