[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
格力公司福利 247人发布
查看14道真题和解析