头图

简单计算器

读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
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就是这样的数,因为22=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;
//} 


沐小轲
9 声望0 粉丝

C++初学者