浙大PAT甲級 1073
阿新 • • 發佈:2018-12-23
字串處理,注意如果結果為整數,則不需要小數點,且包含後導0。
AC程式碼:
#include<iostream> #include<map> #include<cstdio> #include<algorithm> #include<queue> #include<cstring> #include<list> #include<set> #include<stack> #include<cmath> #include<vector> #define inf 999999999 using namespace std; int main() { string s; cin>>s; int flag=0; if(s[0]=='-') { flag=1; } s.erase(0,1); s.erase(1,1); int mark_node1=1; int mark_e; for(int i=0;i<s.size();i++) { if(s[i]=='E') { mark_e=i; break; } } int flag1=0; if(s[mark_e+1]=='-') { flag1=1; } int num=0; for(int i=mark_e+2;i<s.size();i++) { num*=10; num+=s[i]-'0'; } //cout<<num<<endl; if(flag==1) { printf("-"); } if(flag1==0) { if(num==0) { cout<<s[0]<<"."; for(int i=1;i<mark_e;i++) { cout<<s[i]; } } else{ int j; for(j=0;j<mark_node1+num;j++) { if(j>=mark_e) { cout<<0; } else cout<<s[j]; } if(j<mark_e) { cout<<"."; } for(int i=mark_node1+num;i<mark_e;i++) { cout<<s[i]; } } } else { if(num==0) { cout<<s[0]<<"."; for(int i=1;i<mark_e;i++) { cout<<s[i]; } } else { cout<<"0."; for(int i=1;i<num;i++) { cout<<"0"; } for(int i=0;i<mark_e;i++) { cout<<s[i]; } } } }