标签:png ++ images style printf clu ima -- break
题目链接:http://jnuacm.club:8080/oj/problem_show.php?pid=1184
花了半个小时,强行拗出一长串又臭又长的代码,把所有情况都分了(该分的,不该分的……都分了……)
1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 #define MAX 120 5 char num[MAX],d[MAX],b_[10],b; 6 int main() 7 { 8 int t; 9 scanf("%d",&t); 10 while(t--) 11 { 12 scanf("%s",num); 13 if(num[0]==‘0‘) 14 { 15 int i,cnt; 16 for(i=2,cnt=0;;i++,cnt++) 17 { 18 if(num[i]==‘e‘) break; 19 d[cnt]=num[i]; 20 } 21 d[cnt]=‘\0‘; 22 i++; 23 for(cnt=0;num[i];i++,cnt++) b_[cnt]=num[i]; 24 b_[cnt]=‘\0‘; 25 int len_b=strlen(b_); 26 b=0; 27 for(i=0;i<len_b;i++) b+=(b_[i]-‘0‘)*(int)pow(10,(len_b-1-i)); 28 int len_d=strlen(d); 29 if(len_d==1 && d[0]==‘0‘)//这个数是0 30 { 31 printf("0\n"); 32 } 33 else if(b<len_d)//不需要添加后缀0,需要移动小数点,并去掉前缀0 34 { 35 int d_0=0; 36 for(i=0;i<len_d;i++) 37 { 38 if(d[i]!=‘0‘) break; 39 if(d[i]==‘0‘) d_0++; 40 }//前缀0个数 41 if(b<=d_0)//b <= d的前缀0个数,n<1 42 { 43 printf("0."); 44 for(i=b;i<len_d;i++) printf("%c",d[i]); 45 printf("\n"); 46 } 47 else//b > d的前缀0个数,n>=1 48 { 49 for(i=d_0;i<b;i++) printf("%c",d[i]); 50 printf("."); 51 for(;i<len_d;i++) printf("%c",d[i]); 52 printf("\n"); 53 } 54 } 55 else if(b==len_d)//直接去掉小数点,并去掉前缀0 56 { 57 for(i=0;i<len_d;i++) if(d[i]!=‘0‘) break; 58 for(;i<len_d;i++) printf("%c",d[i]); 59 printf("\n"); 60 } 61 else//需要添加后缀0,并且去掉前缀0 62 { 63 for(i=0;i<len_d;i++) if(d[i]!=‘0‘) break; 64 for(;i<len_d;i++) printf("%c",d[i]); 65 for(i=1;i<=b-len_d;i++) printf("0"); 66 printf("\n"); 67 } 68 } 69 else 70 { 71 int i,cnt; 72 for(i=2,cnt=0;;i++,cnt++) 73 { 74 if(num[i]==‘e‘) break; 75 d[cnt]=num[i]; 76 } 77 d[cnt]=‘\0‘; 78 i++; 79 for(cnt=0;num[i];i++,cnt++) b_[cnt]=num[i]; 80 b_[cnt]=‘\0‘; 81 int len_b=strlen(b_); 82 b=0; 83 for(i=0;i<len_b;i++) b+=(b_[i]-‘0‘)*(int)pow(10,(len_b-1-i)); 84 int len_d=strlen(d); 85 if(b<len_d)//不需要添加0,需要移动小数点 86 { 87 printf("%c",num[0]); 88 for(i=0;i<b;i++) printf("%c",d[i]); 89 printf("."); 90 for(;i<len_d;i++) printf("%c",d[i]); 91 printf("\n"); 92 } 93 else if(b==len_d)//直接去掉小数点 94 { 95 printf("%c",num[0]); 96 for(i=0;i<len_d;i++) printf("%c",d[i]); 97 printf("\n"); 98 } 99 else//需要添加后缀0 100 { 101 printf("%c",num[0]); 102 for(i=0;i<len_d;i++) printf("%c",d[i]); 103 for(i=1;i<=b-len_d;i++) printf("0"); 104 printf("\n"); 105 } 106 } 107 } 108 }
标签:png ++ images style printf clu ima -- break
原文地址:http://www.cnblogs.com/dilthey/p/6819022.html