PAT甲题题解-1073. Scientific Notation (20)-字符串处理
题意:给出科学计数法的格式的数字A,要求输出普通数字表示法,所有有效位都被保留,包括末尾的0。
分两种情况,一种E+,一种E-。具体情况具体分析╮(╯_╰)╭
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string.h>
#include <cmath>
#define POSITIVE 1
#define NEGATIVE 2
using namespace std;
/*
将科学计数法表示的数转换成传统的形式输出
*/
const int maxn=;
char str[maxn];
char expval[maxn]; void printNum(char *num,int idxE,int fraclen,int e,int mark){
//指数为正
if(mark==POSITIVE){
bool flag=false;
if(num[]!=''){
flag=true;
printf("%c",num[]);
}
num+=;
int minlen=min(fraclen,e);
for(int i=;i<minlen;i++){
//前面的0直接忽略
if(num[i]!=''){
flag=true;
}
if(flag){
printf("%c",num[i]);
}
}
if(e>=fraclen){
for(int i=;i<e-fraclen;i++)
printf("");
}
else{
printf(".");
for(int i=;i<fraclen-e;i++)
printf("%c",num[minlen+i]);
}
}
//指数为负
else{
printf("0.");
for(int i=;i<e-;i++){
printf("");
}
for(int i=;num[i]!='E';i++){
if(num[i]!='.')
printf("%c",num[i]);
}
}
}
int main()
{
scanf("%s",str);
int len=strlen(str);
int idxE=;
int fracLen;
for(int i=;i<len;i++){
if(str[i]=='E'){
idxE=i; //E的索引
break;
}
}
fracLen=idxE-;//小数部分长度
int explen=;
for(int i=idxE+;i<len;i++){
expval[explen++]=str[i];
}
expval[explen]='\0';
int e=atoi(expval);
if(str[idxE+]=='+'){
if(str[]=='-')
printf("-");
printNum(str+,idxE,fracLen,e,POSITIVE); }
else{
if(str[]=='-')
printf("-");
printNum(str+,idxE,fracLen,e,NEGATIVE);
}
return ;
}
PAT甲题题解-1073. Scientific Notation (20)-字符串处理的更多相关文章
- PAT甲题题解-1108. Finding Average (20)-字符串处理
求给出数的平均数,当然有些是不符合格式的,要输出该数不是合法的. 这里我写了函数来判断是否符合题目要求的数字,有点麻烦. #include <iostream> #include < ...
- PAT甲题题解-1041. Be Unique (20)-水题
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789189.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1050. String Subtraction (20)-水题
#include <iostream> #include <cstdio> #include <string.h> #include <algorithm&g ...
- PAT甲题题解-1088. Rational Arithmetic (20)-模拟分数计算
输入为两个分数,让你计算+,-,*,\四种结果,并且输出对应的式子,分数要按带分数的格式k a/b输出如果为负数,则带分数两边要有括号如果除数为0,则式子中的结果输出Inf模拟题最好自己动手实现,考验 ...
- PAT甲题题解-1096. Consecutive Factors(20)-(枚举)
题意:一个正整数n可以分解成一系列因子的乘积,其中会存在连续的因子相乘,如630=3*5*6*7,5*6*7即为连续的因子.给定n,让你求最大的连续因子个数,并且输出其中最小的连续序列. 比如一个数可 ...
- PAT甲题题解-1120. Friend Numbers (20)-水题
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789775.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1015. Reversible Primes (20)-素数
先判断n是否为素数然后把n转化成d进制下再反转,转化为十进制的num判断num是否为素数 注意n为0和1时,不是素数!!!注意反转后的num也有可能为1,不是素数!!! #include <io ...
- PAT甲题题解-1042. Shuffling Machine (20)-模拟
博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6789205.html特别不喜欢那些随便转载别人的原创文章又不给 ...
- PAT甲题题解-1046. Shortest Distance (20)-做了一个假的最短路,水
一开始以为是最短路,结果是给你一个环,让你求环上两点之间的距离...那还做毛线 然而还是得做毛线 #include <iostream> #include <cstdio> # ...
随机推荐
- 最短路径Dijkstra matlab
Dijkstra: function [dist,pre, full_path]=MinRoad_Dijkstra(G,v0) n=0; if isfield(G,'w') && ~i ...
- Audit log report
- 深入浅出Web开发——Fiddler
环境配置: 如果使用Chrome,Fiddler无法捕捉HTTP请求信息,请检查Chrome是否使用SwitchyOmega插件.
- Eclipse 中怎样自动格式化代码?
首先 有一个 检查代码风格的工具叫checkstyle,具体怎么下载,请自行百度.. 当你在eclipse安装好 checkstyle后,对于使用google标准的人来说,选择一个项目,右键,点击ch ...
- 【Python】新建自定义个数的自定义长度名字
# -*- coding:utf-8 -*- import random def CreateRandomName(number,length): """ :param ...
- BZOJ3578:GTY的人类基因组计划2(集合hash,STL)
Description GTY召唤了n个人来做实验,GTY家的房子很大,有m个房间一开始所有人都在1号房间里,GTY会命令某人去某个房间等待做实验,或者命令一段区间的房间开始实验,实验会获得一些实验信 ...
- BZOJ2115:[WC2011] Xor(线性基)
Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ,Di,表示 Si 与Ti之间存在 一条权值为 ...
- 对比flash与ajax哪个好?
Ajax的优势: (1)可搜索性 普通的文本网页会更有利于SEO.文本内容是搜索引擎容易检索的,而繁琐的swf字节码却是搜索引擎不愿触及的.虽然Google等一些大型的搜索引擎可以检索SWF内部的内容 ...
- Linux命令——压缩和解压缩
Linux命令--压缩和解压缩 尽管文件后缀名在Linux中没什么用,但还是来看看: .gz:表示由gzip压缩工具压缩的文件 .bz2:表示由bzip2压缩工具压缩的文件 .tar:表示由tar打包 ...
- C++与C#互调dll的实现步骤
这篇文章主要介绍了C++与C#互调dll的实现步骤,dll动态链接库的共享在一些大型项目中有一定的应用价值,需要的朋友可以参考下 本文实例展示了C++与C#互调dll的实现步骤,在进行大型项目共享dl ...