[PAT解题报告] Scientific Notation
简单题,字符串处理,把科学计数法转变为普通浮点数。
科学计数法是一位整数的标准形式,保证有E,并且带指数。可以先找到E,把E转变为空格,然后把指数读出来,如果指数是0,则把E之前的完整输出。
如果指数小于0,则一定是0.xxxx, 注意调整小数点,小数点后补0,输出即可。
如果指数大于0,则一定大于等于1,同样注意小数点,而且有可能最后没有小数点了,结尾还可能要补0。
请注意如果原来输入末尾有0,能不动就补动。
#include <cstdio> #include <cstring> #include <string> char s[10010]; void help(char *s) { char *p = strstr(s, "E"); int e; sscanf(p + 1, "%d", &e); *p = 0; if (e == 0) { puts(s); } else if (e < 0) { printf("0."); for (++e;e;++e) { putchar('0'); } for (;*s;++s) { if (*s != '.') { putchar(*s); } } puts(""); } else { putchar(*s++); for (++s; (*s) && e; --e, ++s) { putchar(*s); } if (*s) { putchar('.'); for (;*s;++s) { putchar(*s); } } else { for (;e;--e) { putchar('0'); } } puts(""); } } int main() { scanf("%s",s); if (s[0] == '-') { putchar('-'); } if ((s[0] == '+') || (s[0] == '-')) { help(s + 1); } else { help(s); } }
原题链接: http://www.patest.cn/contests/pat-a-practise/1073