Li-xy 2021-11-28 15:23 采纳率: 97.3%
浏览 24
已结题

各路神仙看看吧,遇到好几次这种情况,不知道如何解决,答案错误是输出超限还是咋的

在科学记数法中,一个数可以被写成一个实数a与一个10的n次幂的积:a x 10n

给定一个数科学记数法表示中的a和n的值,求该数原本的值。
输入
输入a, n代表科学记数法表示中的实数部分和幂次大小,1 <= a < 10 ,0 <= n <=1000。
输出
输出其表达的值。
样例输入 Copy
1.22 2
样例输出 Copy
122
提示
表达的数字可以达到1000位。
#include<stdio.h>
#include<math.h>
int main()
{
double a;
double z;
int n;
scanf("%lf%d",&a,&n);
z=a*pow(10,n);
printf("%.0lf",z);
return 0;
}

  • 写回答

1条回答 默认 最新

  • 文又霖 2021-11-29 10:49
    关注

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    char a[1112];
    cin>>a;
    int n; //1.22 2
    cin>>n;
    int len1=strlen(a);
    int len;
    if(len1>1)len=len1-2;
    else {
    cout<<a;
    for(int i=0;i<n;i++){
    cout<<0;
    }
    cout<<endl;
    return 0;
    }
    if(n==0){
    cout<<a<<endl;
    return 0;
    }
    if(n>=len){
    cout<<a[0];
    for(int i=2;i<len1;i++){
    cout<<a[i];
    }
    for(int i=0;i<n-len;i++){
    cout<<0;
    }
    cout<<endl;
    return 0;
    }
    if(n<len){
    cout<<a[0];
    int j=2;
    while(n--){
    cout<<a[j++];
    }
    cout<<a[1];
    for(;j<len1;j++){
    cout<<a[j];
    }
    cout<<endl;
    return 0;
    }
    }
    我没试过,但这个大概能通过?10的1000次方太大了超过double的范围了,也超过的unsigned long long 的范围了,只能用字符形式输出

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月20日
  • 已采纳回答 12月12日
  • 创建了问题 11月28日