不用纠结怎么把输入串变成结果串,一部分一部分输出即可。(时间不够写一部分是一部分,+的情况10分-的情况6分,还漏了4分有空来讨论一下)
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=10010; 4 int main(){ 5 char a[maxn]; 6 scanf("%s",a); 7 if(a[0]==‘-‘) printf("-"); 8 int len=strlen(a); 9 int pos=0; 10 for(;pos<len;pos++){ 11 if(a[pos]==‘E‘) break; 12 } 13 int index=(a[len-1]-‘0‘)+(a[len-2]-‘0‘)*10;// 14 int dpos; 15 if(a[pos+1]==‘+‘){ 16 for(int i=1;i<pos;i++){ 17 if(a[i]!=‘.‘) printf("%c",a[i]); 18 if(a[i]==‘.‘) dpos=i; 19 } 20 for(int i=0;i<(index-(pos-dpos-1));i++){ 21 printf("0");//不需要补0的情况没讨论 22 } 23 }//10分 24 else if(a[pos+1]==‘-‘){ 25 printf("0."); 26 for(int i=0;i<index-1;i++){ 27 printf("0"); 28 } 29 for(int i=1;i<pos;i++){ 30 if(a[i]!=‘.‘) printf("%c",a[i]); 31 } 32 } //16分 33 }
原文地址:https://www.cnblogs.com/taiga/p/12663898.html
时间: 2024-10-09 18:24:46