PTA1024 科学计数法 (20 分)

本文档详细讲解了两个C/C++程序,涉及浮点数的输入、处理小数点和指数表示,以及不同情况下的数值格式化。第一部分展示了如何定位小数点并处理E表示法,第二部分则通过示例演示了如何根据精度和符号正确输出数值。
摘要由CSDN通过智能技术生成

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
#define N 10000
void main()
{
    int i,t,m=0,n;//m代表小数点所在的位置
    char f1,f2,p;//n代表E的位置
    char a[N]={0};
    scanf("%c",&f1);
    for(i=0;scanf("%c",&a[i]);i++){
        if(a[i]=='.')m=i;
        if(a[i]=='E'){
            n=i;
            break;
        }
    }
    scanf("%c",&f2);
    scanf("%d",&t);
    if(f1=='-')printf("%c",f1);
    if(f2=='+'){
        for(i=0;i<t;i++){
            if(a[m+i]=='E'){
                a[m+i]='0';
                printf("%c",a[m+i]);
            }
            p=a[m+i];
            a[m+i]=a[m+i+1];
            a[m+i+1]=p;
        }
        for(i=0;a[i]!='.';i++)printf("%c",a[i]);
        printf("%c",a[i]);
    }
    if(f2=='-'){
        for(;;n--){
            if(n==1){
                a[t+1]=a[0];
                a[0]='0';
                for(i=2;i<=t;i++){
                    a[i]='0';
                }
                break;
            }
            a[n+t]=a[n];
        }
        for(i=0;a[i]!='E';i++)printf("%c",a[i]);
    }
    printf("\n");
}
#include<stdio.h>
int main(void)
{
    char a[10001]={0};
    int i,ex;
    char head;
    scanf("%c%c.%[0-9]E%d",&head,&a[0],a+1,&ex);//a+1的输入写法%[0-9],表示%s只读入0-9个字符,并且末尾加上'\0'
    if(head=='-')printf("-");
    if(ex>=0){
        for(i=0;i<ex+1||a[i]!=0;i++){//此处的a[i]!=0控制的是最后的'\0',for循环要把a全走一遍
            if(i==ex+1)printf(".");
            printf("%c",a[i]==0?'0':a[i]);
        }
    }else{
        printf("0.");
        for(i=1;i<(-ex);i++){
            printf("0");
        }
        printf("%s",a);
    }
    printf("\n");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值