前言

这个题目要考虑挺多小细节的(不过比起福尔摩斯那道还是hhh),我尽力了。。。

正文

题目

科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。

现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。

输入格式:

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

输出格式:

对每个测试用例,在一行中按普通数字表示法输出 A,并保证所有有效位都被保留,包括末尾的 0。

输入样例 1:

+1.23400E-03

输出样例 1:

0.00123400

输入样例 2:

-1.2E+10

输出样例 2:

-12000000000

代码

#include <stdio.h>
#include<string.h>
#define MAX 1000
int main(){char s[MAX];int flag=1,num[MAX];//指数符号和数组 int i,len=0,exp=0; int j=0,n;int iBegin=0,iEnd=0;//指数位起点和终点scanf("%s",s);n=strlen(s);//字符串长度 if(s[0]=='-') //整数前的负号printf("-");//是符号就直接输出for(i=1;s[i]!='E';i++){ if(s[i]!='.'){num[j++]=s[i]-'0';//存储E前的数字进入数组 len++;//数组长度} }if(s[i+1]=='-'){// E后的符号,指数的正负 flag=-flag;} iBegin=i+2;//指数的第一位 iEnd=iBegin;for(iEnd;iEnd<n;iEnd++){exp=exp*10+(s[iEnd]-'0');//存放指数 }/*第一种情况如果指数是0*/if(exp==0){ for(j=0;j<len;j++)printf("%d",num[j]);//输出数组 }/*第二种情况如果指数是负数*/if(flag==-1){printf("0.");while(exp-1){printf("0");exp--;}for(j=0;j<len;j++)printf("%d",num[j]);//输出数组 } /*第三种情况如果指数是正数*/else if(flag==1){if(exp<len-1) //第三种情况里的第一种情况:如果指数小于数组{for(j=0;j<len;j++){printf("%d",num[j]);if(j==exp){printf(".");//输出小数点 }}} else if(exp>=len-1){//第三种情况里的第二种情况:如果指数大于等于数组for(j=0;j<len;j++){printf("%d",num[j]);}while(exp-len+1){printf("0");exp--;}}   }
}

1024 科学计数法(C语言详解)相关推荐

  1. PTA 1024 科学计数法 (c语言)

    1024 科学计数法 (20 分) 代码如下 #include<string.h> int main(void) {char head,a[10001]= {0};int ex=0;sca ...

  2. PAT乙级-1024 科学计数法- C语言实现(31行AC)

    考察知识点归纳: 根据题目要求输出 坑点归纳: 1.若小数部分长度等于指数值时不用在末尾加'.' 2.虽然题目说指数可能为0,实际给出指数都不为0 #include<stdio.h> in ...

  3. PAT乙级 C语言 1024 科学计数法

    注意点:俺没有注意到个位数是1位--且可以用"%[^E]E%d"输入,要不可以省一堆压根没用的东西--但我懒得改了 我觉得这个写的很好PAT乙级1024. 科学计数法(C语言)_对 ...

  4. PAT乙级 1024. 科学计数法 (C语言)

    1024. 科学计数法 (20) 题目: 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即 ...

  5. PAT 1024 科学计数法 (20分) C语言实现

    1024 科学计数法 (20分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数部 ...

  6. 1024 科学计数法 (20)(20 分)

    1024 科学计数法 (20)(20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+, ...

  7. C++学习之路 | PTA乙级—— 1024 科学计数法 (20 分)(精简)

    1024 科学计数法 (20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数 ...

  8. 1024 科学计数法——C/C++实现

    题目 1024 科学计数法 (20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 ...

  9. PAT乙级 1024 科学计数法 python

    题目 1024 科学计数法 分数 20 作者 HOU, Qiming 单位 浙江大学 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[± ...

  10. PAT 1024 科学计数法

    1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...

最新文章

  1. CV00-01-开篇与环境搭建
  2. 由“公共类”看出的一些东西
  3. NeurIPS提前看 | 四篇论文,一窥元学习的最新研究进展
  4. ImportError: No module named protobuf
  5. 减少系统资源占用的15个CSS常识
  6. log4net使用详解 .
  7. arrays中copyof复制两个数组_Python数组切片中的复制与否问题-list篇
  8. 3部世界顶级宇宙纪录片,献给对宇宙万物充满好奇的你
  9. fastapi 传输文件存文件_python3 FastAPI框架入门 基本使用, 模版渲染, 数据交互,cookie使用, 上传文件, 静态文件配置...
  10. 【LeetCode】4月2日打卡-Day18-矩阵操作
  11. 天气预测频繁2项集_986天气| 今年冬天比往年更冷?官方回应来了
  12. C#.NET常见问题(FAQ)-如何使用DataGridView跟Excel数据交互
  13. 宝可梦推出「电子鸡」新游戏 训练师赶紧将可爱伊布带回家!
  14. Android虚拟机报错解决方法
  15. 【Minecraft java edition 模组开发】(二):通过对岩浆怪和雪傀儡的源码分析,自己制作一个雪球怪
  16. 龙门标局:白炽灯商标转让所在的类别属于第几类?
  17. 华为设备配置MAC地址
  18. Linux常见日志文件和常用命令
  19. MATLAB程序:BPSK/QPSK的调制与解调
  20. 云原生时代的业务流程编排

热门文章

  1. 原生js添加class
  2. iPhone12白苹果无法开机,这种情况你有遇到吗?
  3. java笔试试题含答案_Java笔试题带答案
  4. 数据库设计工具-----PD
  5. 分析LOIC流,判断DDoS攻击源
  6. SQL Server数据库第二课:创建数据库表、完善数据库表的设计、建立数据库表之间的关系
  7. C语言中期报告模板,学院毕业设计(论文)中期报告模板
  8. 最简单的电脑上截长图的方法
  9. 通过Kali模拟CC攻击进行WEB压力测试实操
  10. CTFHUBWeb技能树——密码口令writeup 附常见网络平台默认密码