1024. 科学计数法 (20) PAT乙级真题
来源:互联网 发布:云计算产业链市场份额 编辑:程序博客网 时间:2024/05/17 03:26
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
这道题算是20分题目中有一定难度的题目了,难点就在于E后面指数为负的时候的处理细节了,具体的分析我在下面的程序里面再指出:#include<stdio.h>#include<string.h>int main(void){ int l,i,j=1,index=0; char c[10050]; //用字符串来储存数据 gets(c); if (c[0]=='-') printf("-"); l=strlen(c)-1; do //从后面开始先取出指数 { index+=(c[l]-'0')*j; j*=10; }while(c[--l]!='+'&&c[l]!='-'); //直到找到E后面的符号为止 if (c[l]=='+') { if (index>=l-4) //4是最前面的符号、E、E后面的符号以及字符串结尾的\0,这里是指数和数字长度的比较 { for (i=1;i<=l-2;i++) { if (i!=2) printf("%c",c[i]); } for (i=i-2;i<=index;i++) { printf("0"); } } else { i=1; do { if (i!=2) printf("%c",c[i]); if (i==index+2) printf("."); }while(c[++i]!='E'); } } else //这里是当为负指数的情况 { printf("0."); for (i=0;i<index-1;i++) printf("0"); i=1; do { if (i!=2) printf("%c",c[i]); }while(c[++i]!='E'); } return 0;}
阅读全文
0 0
- 1024. 科学计数法 (20)-PAT乙级真题
- pat乙级真题:1024. 科学计数法 (20)
- 1024. 科学计数法 (20) PAT乙级真题
- PAT-乙级-1024. 科学计数法 (20)
- PAT乙级.1024. 科学计数法 (20)
- PAT乙级 1024. 科学计数法 (20)
- PAT 乙级 1024. 科学计数法 (20)
- PAT 乙级 1024. 科学计数法 (20)
- PAT乙级 1024. 科学计数法 (20)
- PAT乙级1024. 科学计数法 (20)
- [PAT乙级]1024. 科学计数法 (20)
- PAT乙级1024. 科学计数法 (20)
- pat 乙级 1024. 科学计数法 (20)
- 1024. 科学计数法 (20)--PAT乙级
- PAT乙级题1024.科学计数法
- PAT乙级(Basic Level)真题 >科学计数法
- PAT 乙级 1024. 科学计数法
- [PAT-乙级]1024.科学计数法
- ES6学习之路3----rest参数与扩展运算符
- 51Nod 1031 骨牌覆盖
- 小程序接口---json格式
- opencv中ArUco识别
- 深度学习:语言模型的评估标准
- 1024. 科学计数法 (20) PAT乙级真题
- ubuntu16.04 Git add 使用tab键卡死
- mac之tomcat安装启动配置
- 《算法艺术与信息学竞赛》之 递归与分治法 例四 丢失的数
- 代码重构/坏味道详解
- 【Android studio】R文件错误的解决办法
- 棋盘游戏 HDU
- c++线程安全的栈
- es