思路:先找到E的位置,用flag_E标记一下。然后计算flag_E+2位置一直到末尾的数,计算指数大小exp。然后根据E后面的“+-”号分类讨论。
“-”:先判断字符串第一项是否为“-”,“-”输出,“+”不输出。然后先输出“0.”。再输出格式为0.000XXX。小数点后连续0的个数为exp-1,然后XXX就是原字符串str[3]一直到str[flag_E-1]的数字。
“+”:分三种情况讨论:
1.exp小于小数点后的数字个数。照样先判断是否输出“-”,然后从str[3]一直输出到str[exp+2],再输出一个“.”,最后输出剩余数字。
2.exp正好等于小数点后数字个数。那么就不用输出“.”。
3.exp大于小数点后的数字个数。照样先判断是否输出“-”,然后从str[3]一直输出到str[flag_E-1],这里exp要递减。最后,输出exp更新后的个数的“0”。
代码:
#include<cstdio>
#include<cstring>
int main(){
char str[10010];
scanf("%s",str);
int n = strlen(str);
int flag_E = -1;
for(int i = 0;i < n; i ++){
if(str[i] == '