(PAT Basic Level)1118 如需挪车请致电

上图转自新浪微博。车主用一系列简单计算给出了自己的电话号码,即:

2/2=1、3+2=5、9​=3、9​=3、0%=0、叁=3、5−2=3、9/3=3、1×3=3、23=8、8/2=4,最后得到的电话号码就是 153 3033 3384。

本题就请你写个程序自动完成电话号码的转换,以帮助那些不会计算的人。

输入格式:

输入用 11 行依次给出 11 位数字的计算公式,每个公式占一行。这里仅考虑以下几种运算:加(+)、减(-)、乘(*)、除(/)、取余(%,注意这不是上图中的百分比)、开平方根号(sqrt)、指数(^)和文字(即 0 到 9 的全小写汉语拼音,如 ling 表示 0)。运算符与运算数之间无空格,运算数保证是不超过 1000 的非负整数。题目保证每个计算至多只有 1 个运算符,结果都是 1 位整数。

输出格式:

在一行中给出电话号码,数字间不要空格。

输入样例:

2/2
3+2
sqrt9
sqrt9
6%2
san
5-2
9/3
1*3
2^3
8/2

输出样例:

15330333384

本题要注意审题,"题目保证每个计算至多只有 1 个运算符",也就是说存在没有运算符的情况,对应第四个测试点。

AC代码:

#include <bits/stdc++.h>
using namespace std;
int main(){
    int i;
    string s;
    int flag;
    for(i=0;i<11;i++){
        getline(cin,s);
        if((flag=s.find("+"))!=-1) cout<<stoi(s.substr(0,flag))+stoi(s.substr(flag+1));
        else if((flag=s.find("-"))!=-1) cout<<stoi(s.substr(0,flag))-stoi(s.substr(flag+1));
        else if((flag=s.find("*"))!=-1) cout<<stoi(s.substr(0,flag))*stoi(s.substr(flag+1));
        else if((flag=s.find("/"))!=-1) cout<<stoi(s.substr(0,flag))/stoi(s.substr(flag+1));
        else if((flag=s.find("%"))!=-1) cout<<stoi(s.substr(0,flag))%stoi(s.substr(flag+1));
        else if((flag=s.find("^"))!=-1) cout<<pow(stoi(s.substr(0,flag)),stoi(s.substr(flag+1)));
        else if(!s.find("sqrt")) cout<<sqrt(stoi(s.substr(4)));
        else if(s=="ling") cout<<0;
        else if(s=="yi") cout<<1;
        else if(s=="er") cout<<2;
        else if(s=="san") cout<<3;
        else if(s=="si") cout<<4;
        else if(s=="wu") cout<<5;
        else if(s=="liu") cout<<6;
        else if(s=="qi") cout<<7;
        else if(s=="ba") cout<<8;
        else if(s=="jiu") cout<<9;
        else cout<<stoi(s);
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/gaogao0305/article/details/133715264
今日推荐