1024 科学计数法 (20 分)测试点2,3,4

测试点2,3,4卡的是E后面是+的情况
主要卡的是+的情况,题目不难,用substr截取出E前后的东西,然后根据情况输出即可,具体代码里有解释

#include
#include
#include
#include
using namespace std;
void change(string k,int &result)//这里计算E后面的数有是多少
{
    stringstream t;
    t<>result;
}
int main()
{
    string num,headnum,lastnum;
    int last;
    int lastflage=0;
    getline(cin,num);
    int index=num.find('E');
    if(num[0]!='+'){
        cout<<"-";
    }//判断是不是-是-的先输出出来
    if(num[index+1]=='+'){
        lastflage=1;
    }//标记一下E后面是正是负
    headnum=num.substr(1,index-1);//截取E前面的
    lastnum=num.substr(index+2,num.size()-1);//截取E后面的
    change(lastnum,last);//计算E后面的有多少
    if(lastflage==0){
        if(last>0){
            cout<<"0.";
        }//如果是-的,且E后面的数大于0,肯定是0.xxx所以先输出0.
        for(int i=1;i

 

你可能感兴趣的:(PAT乙级)