1024 科学计数法(C语言详解)
前言
这个题目要考虑挺多小细节的(不过比起福尔摩斯那道还是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语言详解)相关推荐
- PTA 1024 科学计数法 (c语言)
1024 科学计数法 (20 分) 代码如下 #include<string.h> int main(void) {char head,a[10001]= {0};int ex=0;sca ...
- PAT乙级-1024 科学计数法- C语言实现(31行AC)
考察知识点归纳: 根据题目要求输出 坑点归纳: 1.若小数部分长度等于指数值时不用在末尾加'.' 2.虽然题目说指数可能为0,实际给出指数都不为0 #include<stdio.h> in ...
- PAT乙级 C语言 1024 科学计数法
注意点:俺没有注意到个位数是1位--且可以用"%[^E]E%d"输入,要不可以省一堆压根没用的东西--但我懒得改了 我觉得这个写的很好PAT乙级1024. 科学计数法(C语言)_对 ...
- PAT乙级 1024. 科学计数法 (C语言)
1024. 科学计数法 (20) 题目: 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即 ...
- PAT 1024 科学计数法 (20分) C语言实现
1024 科学计数法 (20分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数部 ...
- 1024 科学计数法 (20)(20 分)
1024 科学计数法 (20)(20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+, ...
- C++学习之路 | PTA乙级—— 1024 科学计数法 (20 分)(精简)
1024 科学计数法 (20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数 ...
- 1024 科学计数法——C/C++实现
题目 1024 科学计数法 (20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 ...
- PAT乙级 1024 科学计数法 python
题目 1024 科学计数法 分数 20 作者 HOU, Qiming 单位 浙江大学 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[± ...
- PAT 1024 科学计数法
1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...
最新文章
- CV00-01-开篇与环境搭建
- 由“公共类”看出的一些东西
- NeurIPS提前看 | 四篇论文,一窥元学习的最新研究进展
- ImportError: No module named protobuf
- 减少系统资源占用的15个CSS常识
- log4net使用详解 .
- arrays中copyof复制两个数组_Python数组切片中的复制与否问题-list篇
- 3部世界顶级宇宙纪录片,献给对宇宙万物充满好奇的你
- fastapi 传输文件存文件_python3 FastAPI框架入门 基本使用, 模版渲染, 数据交互,cookie使用, 上传文件, 静态文件配置...
- 【LeetCode】4月2日打卡-Day18-矩阵操作
- 天气预测频繁2项集_986天气| 今年冬天比往年更冷?官方回应来了
- C#.NET常见问题(FAQ)-如何使用DataGridView跟Excel数据交互
- 宝可梦推出「电子鸡」新游戏 训练师赶紧将可爱伊布带回家!
- Android虚拟机报错解决方法
- 【Minecraft java edition 模组开发】(二):通过对岩浆怪和雪傀儡的源码分析,自己制作一个雪球怪
- 龙门标局:白炽灯商标转让所在的类别属于第几类?
- 华为设备配置MAC地址
- Linux常见日志文件和常用命令
- MATLAB程序:BPSK/QPSK的调制与解调
- 云原生时代的业务流程编排