1024 科学计数法 (20 分)C与Java
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][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
思路
- 用d(int)保存整数部分,e(int)保存指数部分,Dec[](char *)保存小数部分;
- 若d<0,输出符号’-’;
- 若e<0,输出e个零‘0’,并且第一次输出(count==0)时输出小数点‘.’;
- 输出整数部分d(无符号);
- 输出小数部分,若指数(e)大于小数的位数(strlen(Dec)),输出多余的0;否则若没输出过小数点‘.’,输出小数点‘.’。
- Over。
C
#include <stdio.h>
int main(){
int d,e,count=0,i;
char xiao[10000];
scanf("%d.%[0-9]E%d",&d,xiao,&e);
if(d<0){
printf("-");
}else{
printf("");
}
while(e++<0){
if(count++==0){
printf("0.");
}else{
printf("0");
}
}
e--;
printf("%d",abs(d));//abs() 函数用于求整数的绝对值。
for(i=0;i<strlen(xiao)||i<e;i++){ //strlen 是一个函数,它用来计算指定字符串 str 的长度,但不包括结束字符(即 null 字符)
if(i==e && !count){
if(i<strlen(xiao)){
printf(".%c",xiao[i]);
}else{
printf(".0");
}
}else{
if(i<strlen(xiao)){
printf("%c",xiao[i]);
}else{
printf("0");
}
}
}
return 0;
}
C版本精简
#include <stdio.h>
int main(){
int d,e,count=0;
char Dec[10000];
scanf("%d.%[0-9]E%d",&d,Dec,&e);
printf("%s",d<0 ? "-" : "");
while( e++ < 0 )
printf("0%s",count++==0 ? "." : "");
e--;
printf("%d",abs(d));//abs() 函数用于求整数的绝对值。
for(int i=0 ; i<strlen(Dec) || i<e ; i++)
//strlen 是一个函数,它用来计算指定字符串 str 的长度,但不包括结束字符(即 null 字符)
printf("%s%c",i==e && !count ? ".":"",i<strlen(Dec) ? Dec[i] : '0');
}//(a>b)?y:n。解释:如果A大于B,那么选择Y的结果,如果A小于等于B,那么选择N的结果。
Java
用Scanner语句读入会极大可能超时,所以查询网络的回答得出如下:
import java.io.*;
import java.math.*;
public class Main {
public static void main(String[] args)throws IOException {
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
BigDecimal s = new BigDecimal(in.readLine());
System.out.println(s.toPlainString());
}
}
1024 科学计数法 (20 分)C与Java的更多相关文章
- PAT Basic 1024 科学计数法 (20 分) Advanced 1073 Scientific Notation (20 分)
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...
- PAT 1024 科学计数法 (20)(精简版代码+思路+推荐测试样例)
1024 科学计数法 (20)(20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+, ...
- PAT乙级 1024. 科学计数法 (20)
1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...
- PAT-乙级-1024. 科学计数法 (20)
1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...
- PAT乙级 1024. 科学计数法 (20)(未通过全部测试,得分18)
1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...
- PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20)
PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20) http://www.patest.cn/contests/pat-b-practise/1024 ...
- PAT 1024. 科学计数法 (20)
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位 ...
- C#版 - PAT乙级(Basic Level)真题 之 1024.科学计数法转化为普通数字 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. PAT Bas ...
- P 1024 科学计数法
转跳点:
随机推荐
- day8_python网络编程(实验版本)
1.简单的套接字通信 1.1.服务端 import socket # 买手机 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 插 ...
- python selenium 基础框架
base_page.py # coding=utf-8 import time from selenium.common.exceptions import NoSuchElementExceptio ...
- H3C用Telnet登录
- @noi.ac - 506@ 强连通分量
目录 @description@ @solution@ @accepted code@ @details@ @description@ 有一天你学了一个叫能求出有向图中所有的强连通分量的算法,你决定将 ...
- 微信小程序封装自定义弹窗
最近在做小程序的登录,需要同时获取用户手机号和头像昵称等信息,但是小程序又不支持单个接口同时获取两种数据,因此想到自定义一个弹窗,通过弹窗按钮触发获取手机号事件.记录一下. 具体代码如下: 业务代码中 ...
- 5分钟了解为什么学习Go
1.什么是Go语言? Google开源 编译型语言 21世纪的C语言(主流编程语言都是单线程环境下发布的) 2.Go语言的特点? 简单易学习(类似python学习难度,自带格式化) 开发效率高 执行性 ...
- 洛谷P2590 [ZJOI2008]树的统计 题解 树链剖分+线段树
题目链接:https://www.luogu.org/problem/P2590 树链剖分模板题. 剖分过程要用到如下7个值: fa[u]:u的父节点编号: dep[u]:u的深度: size[u]: ...
- Python--day26--复习
- [转]ECMAScript 2016,2017 和 2018 中所有新功能的示例
很难追踪 JavaScript(ECMAScript)中的新功能. 想找到有用的代码示例更加困难. 因此,在本文中,我将介绍 TC39 已完成 ES2016,ES2017 和 ES2018(最终草案) ...
- js基础——变量、作用域、内存
1.new关键字创建的是引用类型: eg. var box = new Object(); box.name = "Linda";//引用类型添加属性没问题 al ...