苹果苹果梨 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日

悬赏问题

  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效