这一位大佬的代码很厉害
这是地址
要保留所有有效数字,若是正数,前面的正号不输出。

#include <stdio.h>
#define MAX_A    10000
char A[MAX_A];
int pos_E;                  /* E的位置,也是数字A除了指数部分外的末尾 */
int e;                      /* 指数exponent */
char flag_E;                /* 指数的正负 */
int read_A();
int read_cal_E();
int print_A();
int point_forward();        /* 小数点前移 */
int point_back();           /* 小数点后移 */
int print_m_n(int m, int n);
int print_0(int x);
/*************** 这个函数是读指数部分之前的部分 **************************/
/*************** 注意:小数点在数组A的第三个位置 **************************/
int read_A(){int c;for(pos_E = 0; (c = getchar()) != 'E'; ++pos_E)A[pos_E] = c;read_cal_E();            /* 读取指数部分并计算 */
}
/********************************* 读入指数 ******************************/
int read_cal_E(){int i, j;int c = 0;int exp[4] = {0};                 /* 指数绝对值不超过四位 */flag_E = getchar(); for(i = 0; (c = getchar()) != '\n'; ++i)exp[i] = c - '0';for(--i, j = 1; i >= 0; --i,j *= 10)e += j*exp[i];return 0;
}
/****************************** 输出A *************************************/
int print_A(){if(A[0] == '-')putchar(A[0]);if(flag_E == '-')        /* 原小数点可能要前移  */point_forward();else                    /* 原小数点可能要后移 */point_back();return 0;
}
/***************************** 小数点可能前移 ************************************/
int point_forward(){if(e > 0 ){              /* 确实要前移 */printf("0.");print_0(--e);     /* 输出e--个零 */printf("%c", A[1]);  /* 再输出最后一个前移名额 */print_m_n(3, pos_E);/* 输出其余的数 */}else                  /* e==0 输出 */print_m_n(1, pos_E);return 0;
}
/***************************** 小数点可能后移 ************************************/
int point_back(){int i;if(e == 0)print_m_n(1, pos_E);else if(e > 0 && e < (pos_E - 3)){/* 小数点确实要后移 */printf("%c", A[1]);  /* 它说保留所有有效位数字 */print_m_n(3, 3+e);printf(".");print_m_n(3+e, pos_E);}else if(e >= (pos_E - 3)){/* 没有小数点输出 */printf("%c", A[1]);print_m_n(3, pos_E);print_0(e - (pos_E - 3));}
}
/************************** 输出A的下标从m到n的数 *******************************/
int print_m_n(int m, int n){for(; m < n; ++m)printf("%c", A[m]);return 0;
}
/******************************* 输出x个零 *************************************/
int print_0(int x){for(; x > 0; --x)printf("0");return 0;
}
int main(){read_A();            /* 先将A的信息读进来 */print_A();           /* 输出A */return 0;
}

【PAT B1024】科学计数法(C语言)相关推荐

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

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

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

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

  3. PAT 1024 科学计数法

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

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

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

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

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

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

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

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

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

  8. R语言禁止数值表示为科学计数法实战(Turn Off Scientific Notation ):全局设置或者单变量设置

    R语言禁止数值表示为科学计数法实战(Turn Off Scientific Notation ):全局设置或者单变量设置 目录

  9. R语言ggplot2可视化包抑制数据轴使用科学计数法实战

    R语言ggplot2可视化包抑制数据轴使用科学计数法实战 目录 R语言ggplot2可视化包抑制数据轴使用科学计数法实战

  10. c语言科学计数法_C入门:C语言中数据的储存(上)

    How Data is stored in computer memory? 储存数据是计算机进行各种数据操作的基础,为了理解计算机可以对哪些数据进行怎样的操作,有必要了解数据在计算机中的储存方式. ...

最新文章

  1. 判断Oracle中某个字段是否含有数字
  2. MySQL8.0修改密码问题
  3. !亲测有效!质量最高的pr模板网站,有点小贵罢了
  4. 设计模式学习(三)——装饰器模式
  5. 美国高级情报研究计划局(IARPA)发起公共安全问题预测机器学习挑战赛(总奖池10万美金)...
  6. python 基础 - 开发环境搭建
  7. 程序员该如何向奶奶解释 SQL 和 NoSQL?
  8. 用python画圣诞树-Python――画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)...
  9. ak和sk怎么认证 海康威视_“海康威视”也遭遇美断供了?董事长陈宗年回应:正在消化这一信息...
  10. 《SharePoint Portal Server 2003 深入指南》开放了两个章节在线阅读
  11. matlab如何公式编辑器,公式编辑器怎么用 【搞定要领】
  12. 【STM32H7教程】第39章 STM32H7的DMAMUX基础知识(重要)
  13. POJ 3744 Scout YYF I:概率dp
  14. word只在第一页插入页眉
  15. Python爬虫--- 1.5 爬虫实践: 获取百度贴吧内容
  16. csv文件用excel打开乱码
  17. 电压源和电流的关联参考方向_在大学《电路原理》中,电流源和电压源如何判断关联参考方向和非关联参考方向?...
  18. 【AI测试】人工智能测试整体介绍
  19. access中的IIf函数
  20. (转载)使用Android Studio对代码进行重构

热门文章

  1. SCRT804安装教程
  2. python pip安装seaborn sns以及失败解决方法 sns.load_dataset(“tips“)
  3. 数据迁移工具(数据库之间进行数据库迁移所使用的工具及迁移流程。)
  4. 蓝牙方案,蓝牙国密读卡器,TypeA/TypeB/Felca卡读写,分享蓝牙NFC读写器带USB接口,银行卡/CPU卡/NTAG213/Mifare卡蓝牙读写器,usb多通道通讯
  5. php libiconv close_PHP 5.3.10 编译安装时出现 undefined reference to `libiconv' 错误的解决方法...
  6. 如何将视频转换成文字
  7. ArcPy常用基础功能
  8. 烟台蓬莱机场停车费一天多少钱,烟台机场停车哪里便宜
  9. plsqlDev.exe启动时无监听问题
  10. getshell工具下载批量ecshop4.0全版本通杀工具下载