PAT 自学题解 B 1024A 1073

PAT 自学题解 B 1024A 1073,第1张

B 1024/A 1073

#include
#include
#include
using namespace std;
int main()
{
    char s[1000001];//存放初始数据
    char m[1000001];//存放中间的数字
    char m1[1000];//存放指数的数字

    cin>>s;
    int b=0,t=0;//b代表指数的正负,t存放指数部分       0 代表正 1代表负
    if(s[0]=='-') cout<<"-";//输出该数字的正负号

    long long i,j=0;
    for( i=1;i

以下代码参考 【有小小的改动】

(31条消息) 测试点错的来:1024 科学计数法 (20分)_来老铁干了这碗代码的博客-CSDN博客

#include
using namespace std;
int main() {
    char cc[10000]; long long x2;   char c1, c2, c3;
    scanf("%c%c.%[^E]E%c%lld", &c1, &c3, cc, &c2, &x2);//绝了,看这里!!!!!!!!

    string s;
    if(c2 == '-') {
        for(int i = 0; i < x2; i++) {
            if(i==1) s += '.';
            s += '0';
        }
        s += c3;
        s += cc;
    } else {
        s+= c3;
        s+= cc;
        if(s.length()-1 < x2) {//代表小数点后的位数小于指数 需要补0
            int len = s.length()-1;
            for(int i = 0; i < x2-len; i++)
                s+='0';
        } else if(s.length() -1> x2){//代表小数点后的位数大于指数 不需要补0 需要小数点
            s.insert(x2+1, ".");//在字符串中一开始小数点的位置在1上,平移x2个位置,字符串第x2+1个位置上,
        }
    }
    if(c1=='-') s.insert(0,"-");
    cout << s;
    return 0; }

柳神的代码也很好,如下

(31条消息) 1073. Scientific Notation (20)-PAT甲级真题_柳婼的博客-CSDN博客

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/562300.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-01
下一篇 2022-04-01

发表评论

登录后才能评论

评论列表(0条)