1024 科学计数法 (20分)

科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][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

代码:

源码地址:https://github.com/MrHaddis/PAT1024

#include <stdio.h>//MrHaddis
//https://github.com/MrHaddis/PAT1024int main() {//str  和 numberArray的长度一定要10000  // 小于的话测试点6会过不去char str[10000];int strIndex = 0;int numberArray[10000];int zfArray[4];//数字下标int numberIndex = 0;//指数下标int zfIndex = 0;//大小标记位 0右移 1左移int bigTag = 0;//指数标记位int zsTag = 0;//指数数字int zsResult = 0;scanf("%s", &str);//计算一下有多长while (str[strIndex] != '\0') {strIndex++;}//for循环 从1 开始//0 是 +/-  不是数字for (int i = 1; i < strIndex; i++) {if (str[i] == '.') {//是小数点的时候就直接下一个循环continue;} else if (str[i] != 'E' && zsTag == 0) {//接收纯数字numberArray[numberIndex++] = str[i];} else if (zsTag == 1) {//是指数了//改变对应的指数正负标志位if (str[i] == '-') {bigTag = 1;} else if (str[i] == '+') {bigTag = 0;} else {//指数的数字数组zfArray[zfIndex++] = str[i];}} else {//这里是E触发的 且只会触发这一次//+2就直接到数字了i + 2;//改变标志位,该指数了zsTag = 1;}}//如果是负数就输出-if (str[0] == '-') {printf("-");}//计算指数的这个数字是多少 循环要用到for (int k = 0; k < zfIndex; ++k) {int num = zfArray[k] - '0';zsResult = zsResult * 10 + num;}//指数为0就原样输出if (zsResult == 0) {for (int j = 0; j < numberIndex; ++j) {printf("%c", numberArray[j]);}return 0;}//指数为-if (bigTag) {//左移//先输出0for (int i = 0; i < zsResult; i++) {if (i == 0) {printf("0.");} else {printf("0");}}//然后输出数for (int j = 0; j < numberIndex; j++) {printf("%c", numberArray[j]);}} else {//指数为+//这是往右移动小数点//这里对指数循环//不需要打小数点//这个判断是因为 判断一下是否需要小数点,//意思就是指数的数字 是否大于数字的长度,是的话就不需要小数点了//不是的话 就要输出小数点,//numberIndex-是因为,计算的时候只需要计算小数点后的数字//不需要计算小数点之前的数字 所以-1if (zsResult >= numberIndex - 1) {for (int j = 0; j < numberIndex; ++j) {printf("%c", numberArray[j]);}for (int i = 0; i < zsResult - numberIndex + 1; ++i) {printf("0");}} else {//需要打小数点for (int j = 0; j < numberIndex; j++) {printf("%c", numberArray[j]);if (j == zsResult) {printf(".");}}}}return 0;
}

PAT 1024 科学计数法 (20分) C语言实现相关推荐

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

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

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

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

  3. 【PAT (Basic Level) 】1024 科学计数法 (20 分)

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

  4. PAT乙级 1024 科学计数法 (20 分)

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

  5. 测试点错的来:1024 科学计数法 (20分)

    立志用更少的代码做更高效的表达 PAT乙级最优题解-->传送门 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+, ...

  6. 科学技术法c语言字符串,PAT Basic 1024. 科学计数法 (20)(C语言实现)

    我的PAT系列文章更新重心已移至Github,欢迎来看PAT题解的小伙伴请到Github Pages浏览最新内容.此处文章目前已更新至与Github Pages同步.欢迎star我的repo. 题目 ...

  7. 1024 科学计数法 (20分) c/c++代码中有详细解释

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

  8. 【PAT乙级】1024 科学计数法 (20 分)

    题目地址 上面的精简写法: #include<cstdio> #include<iostream> #include<string> #include<alg ...

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

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

最新文章

  1. 扇区、磁盘块、页、页框、缓冲区之间的关系!
  2. nbu 恢复oracle数据库,关于使用nbu重定向恢复oracle数据库rman报错
  3. 【随感】i'm new here
  4. 网站总结 和 相关控件 总结
  5. C/C++混淆点-strcat和strcpy区别
  6. 管理Shader——Shader概览
  7. (C语言)素数是指大于1,且只能被1和它自身整除的正整数。现给定一个范围,请输出在此范围中素数的个数。
  8. 高速缓存dns/ddns
  9. java word 分段符,Word2013文档中插入分隔符(分节符)的方法
  10. 使用神经计算棒二代在OpenVino下推理基于Keras转换的TensorFlow 模型
  11. 第四讲 身份认证技术
  12. org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
  13. 一个不错的下载年限网站
  14. 2022第十二届中国电子文件管理论坛嘉宾揭晓
  15. 记录下2345锁定主页解决方案
  16. AI专家喋喋不休展开争论 为什么说预测是智能的本质
  17. python matlab 多条曲线 单位_【基础篇】MATLAB科研制图常用代码命令
  18. 按键自加自减的c语言数码管编程,8位共阴数码管动态扫描自增自减
  19. 谈谈Web前端工程师的定位
  20. spring注解:spring aop注解详解

热门文章

  1. Python/python翻译软件
  2. 什么是著作权法上的计算机软件
  3. php使用pg中copy命令,postgresql中COPY的用法
  4. tina -飞机大战6.0
  5. 【图解AI】什么是语义分割、实例分割、全景分割
  6. CCF201812-5 管道清洁 题解(最小费可行流)
  7. 小程序开发:概念、特点、原理及技术架构解析
  8. 亚马逊kyc审核要多久?万顿思电商
  9. 202x年办公自动化系统(OA)平台技术方案投标书
  10. 美国著名报刊杂志链接