1024个科学计数法(20分)的C和Java

电脑杂谈  发布时间:2020-05-24 10:24:30  来源:网络整理

vba format 科学计数_科学计数法的计算_printf科学计数

科学计数法是科学家用来表示大数或小数的便捷方法,符合正则表达式[±] [1-9]. [0-9] + E [±] [0-9] +printf科学计数,即数字的整数部分只有1位数字,而小数部分至少有1位数字. 即使是正数,也必须清楚地给出数字的符号及其指数.

现在printf科学计数,实数A以科学计数形式给出. 请根据公用数字符号编写程序输出A,并确保保留所有有效数字.

输入格式:

每个输入包含1个测试用例,用科学计数法表示实数A. 该数字的存储长度不超过9999字节,其指数的绝对值不超过9999.

vba format 科学计数_科学计数法的计算_printf科学计数

输出格式:

对于每个测试用例,在一行上以通用数字符号输出A,并确保保留所有有效位,包括末尾的0.

输入样本1:

+1.23400E-03

printf科学计数_vba format 科学计数_科学计数法的计算

输出样本1:

0.00123400

输入样本2:

-1.2E+10

printf科学计数_科学计数法的计算_vba format 科学计数

输出样本2:

-12000000000

想法

使用d(int)保存整数部分,使用e(int)保存指数部分,使用Dec [](char *)保存小数部分;如果d <0,则输出符号“-”;如果e <0,则输出e零“ 0”和小数点“. ”. 当第一个输出(count == 0)时输出;输出整数部分d(无符号);如果指数(e)大于小数位数(strlen(Dec)),则输出小数部分;输出多余的0;否则,输出小数部分. 否则,如果小数点为“. ”尚未输出,小数点为“. ”输出. 结束.

vba format 科学计数_科学计数法的计算_printf科学计数

C

#include <stdio.h>
int main(){
    int d,e,count=0,i;
    char xiao[10000];
    scanf("%d.%[0-9]E%d",&d,xiao,&e);
    if(d<0){
        printf("-");
    }else{
        printf("");
    }
    while(e++<0){
        if(count++==0){
            printf("0.");
        }else{
            printf("0");
        }
    }
    e--;
    printf("%d",abs(d));//abs() 函数用于求整数的绝对值。
    for(i=0;i<strlen(xiao)||i<e;i++){ //strlen 是一个函数,它用来计算指定字符串 str 的长度,但不包括结束字符(即 null 字符)
        if(i==e && !count){
            if(i<strlen(xiao)){
                printf(".%c",xiao[i]);
            }else{
                printf(".0");
            }
        }else{
            if(i<strlen(xiao)){
                printf("%c",xiao[i]);
            }else{
                printf("0");
            }
        }
    }
    return 0;
}

简单版本C

#include <stdio.h>
int main(){
    int d,e,count=0;
    char Dec[10000];
    scanf("%d.%[0-9]E%d",&d,Dec,&e);
    printf("%s",d<0 ? "-" : "");
    while( e++ < 0 )
        printf("0%s",count++==0 ? "." : "");
    e--;
    printf("%d",abs(d));//abs() 函数用于求整数的绝对值。
    for(int i=0 ; i<strlen(Dec) || i<e ; i++)
    //strlen 是一个函数,它用来计算指定字符串 str 的长度,但不包括结束字符(即 null 字符)
        printf("%s%c",i==e && !count ? ".":"",i<strlen(Dec) ? Dec[i] : '0');
}//(a>b)?y:n。解释:如果A大于B,那么选择Y的结果,如果A小于等于B,那么选择N的结果。

Java

使用Scanner语句阅读很可能会超时,因此查询网络的答案如下:


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-220390-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 郭少飞
        郭少飞

        是祖宗留下来的经验

      热点图片
      拼命载入中...