地址:http://pat.zju.edu.cn/contests/pat-a-practise/1073
模拟题,比较繁琐,细心和耐心,紧张考试情况下很考查代码熟练度。
#include<iostream>
#include<cstring>
#include<sstream>
using namespace std;
int main()
{
char op;
string str;
cin >> str;
int dot_pos, e_pos, expnum;
for(int i = 1; i < str.length(); ++i)
{
if( '.' == str[i])
{
dot_pos = i;
}
else if( 'E' == str[i])
{
e_pos = i;
op = str[i+1];
}
}
string num = str.substr(e_pos+2);
stringstream ss;
ss << num;
ss >> expnum;
if(str[0]== '-')
{
cout << str[0];
}
if(op == '+')
{
int k = 1;
while(k != dot_pos)
cout<<str[k++];
int cnt = 0;
for( int i = dot_pos+1; i < e_pos; ++i)
{
if(expnum == 0)
{
if(!cnt)
cout<< ".";
++cnt;
}
cout << str[i];
--expnum;
}
while(expnum-- > 0)
{
cout<< "0";
}
}
else
{
cout << "0.";
for( int i = 0; i < expnum -1; ++i)
cout<< "0";
cout<<str[dot_pos-1];
for( int i = dot_pos + 1; i < e_pos; ++i)
cout<<str[i];
}
cout<<endl;
return 0;
}