1024. 科学计数法(两点未通过)

Posted Just_for_Myself

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1024. 科学计数法(两点未通过)相关的知识,希望对你有一定的参考价值。

 题目截图:

 

思路:

  字符串处理。根据指数正负做不同处理。

 

代码:

/*
    1024. 科学计数法
*/

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>

#define maxn 10010
char str[maxn];                    // 存储输入值 

int main() {
    // a为整数部分
    // b为E位置,c为指数 
    int i, a, b, c=0, flag=1;     
    scanf("%s", str);
    a = str[1]-\'0\';
    // 查找 E 所在位置 
    for(i=3; i<strlen(str); ++i) {
        if(str[i]==\'E\') {
            b = i;
            break;
        }
    }
    i++;
    // 求指数 
    if(str[i]==\'+\') {
        flag=1;
    }  else {
        flag = -1;
    }
    i++;
    for(; i<strlen(str); ++i) {
        c = c*10+(str[i]-\'0\');
    }
    c = flag*c;
    if(str[0]==\'-\') {
        printf("-"); 
    }
    if(c > 0) {                    // 若指数为正 
        printf("%d", a);
        int l = b-2;
        if(c>l) {                // 去掉小数点,在后面加 0 
            for(i=3; i<b; ++i) {
                printf("%c", str[i]);
            }
            for(i=0;i<c-l+1; ++i) {
                printf("0");
            }
        } else {                // 小数点向右移 c 位 
            for(i=0; i<c; ++i) {
                printf("%c", str[3+i]);
            }
            printf(".");
            i+=3;
            for(; i<b; ++i) {
                printf("%c", str[i]);
            } 
        }
    } else if(c < 0) {            // 若指数为负 
        int l = -c-1;
        printf("0.");            // 前面加 0. 
        for(i=0; i<l; ++i) {    // 小数点向左移 c 位 
            printf("0");
        }
        printf("%d", a);
        for(i=3; i<b; ++i) {
            printf("%c", str[i]);
        }
    } else {                    // 若指数为 0 
        for(i=1; i<b; ++i) {
            printf("%c", str[i]);
        }
    }

    return 0;
}

 

 

:此代码有两个点没过,至今没找到原因。

 

以上是关于1024. 科学计数法(两点未通过)的主要内容,如果未能解决你的问题,请参考以下文章

PAT乙级 1024. 科学计数法 (20)

PAT B1024/A1073 科学计数法

1024 科学计数法

P 1024 科学计数法

1024 科学计数法 (20)(20 分)

1024 科学计数法