PAT B1024 科学计数法 (20分)
题意:首先浮点数部分必有1位小数,指数部分必为整数。其次要求保留所有有效位。 我将其拆分为2个字符串保存,左边的浮点数部分(去掉小数点)num,右边的指数部分exp。均包含符号。首先输出最前面的符号,为正不处理。n为exp的绝对值。然后根据指数的正负:若为负数,共计输出n个0。若为正数,区分为n>=valid_digit和n<valid_digit。前者无小数点,后者需要在适当的位置输出小数点。若为0,当然经过测试,测试数据中不含0指数,严谨起见还是加上,则原样输出。 //1024 科学计数法 (20分) #include <cstdio> char num[10000] = { 0 }; char exp[10000] = { 0 }; int main() { int i, j; i = j = 0; char ch; while ((ch = getchar()) != 'E') { if (ch == '.') { continue; } num[i++] = ch; } while ((ch = getchar()) != '\n') { exp[j++] = ch; } if (num[0] == '-')//最前面的符号部分 putchar('-'); int valid_digit = i - 2;//小数部分的有效位数是i-2 int n = 0; sscanf