PAT B1024/A1073 科学计数法
书中AC代码
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
const int max_n = 10100;
using namespace std;
void Print(bool a) {
if(!a) printf("-");
}
int main() {
#ifdef ONLINE_JUDGE
#else
freopen("1.txt", "r", stdin);
#endif // ONLINE_JUDGE
// for(int j = 0; j < 10; j++) printf("%d",j);
// printf("\n");
char str[max_n];
//char index[max_n];
cin.getline(str, max_n);
bool flag1 = 0, flag2 = 0; //数字的正负, 指数的正负
int len = strlen(str);
// printf("last:%c\n", str[len - 1]);
int i = 0;
//记录数字的正负
if(str[i] == '-') {
flag1 = 0;
i++;
} else if(str[i] == '+') {
flag1 = 1;
i++;
}
int E = 0; //E的位置
for(i++; i < len; i++) {
if(str[i] == 'E') {
E = i;
break;
}
}
//记录指针的正负
if(str[i++] == '-') {
flag2 = 0;
} else if(str[i++] == '+') {
flag2 = 1;
}
//记录指针的位置
// printf("index:%c\n", str[E+1]);
//int index_set = i + 1;
int index = 0;
int t = 0;
// printf("%c %c ", str[len - 2], str[len - 1]);
// int a = pow(10, 0);
// printf(" a:%d", a);
for(int j = len - 1; j > E + 1; j--) {
index += ((str[j] - '0') * pow(10, t));
t++;
}
//printf("flag1:%d flag2:%d E:%d index:%d\n", flag1, flag2, E, index);
//打印计算结果
Print(flag1);
//指数为0
if(index == 0) {
printf("%c", str[1]);
}
if(flag2 == true) { //指数为正
//E - 3 为小数位数大小
if(E - 3 == index) { //小数部分位数等于指数大小
for(int i = 1; i < E; i++) {
if(i != 2) printf("%c", str[i]);
}
}
if(E - 3 < index) {
for(int i = 1; i < E; i++) {
if(i != 2) printf("%c", str[i]);
}
for(int i = index - (E - 3); i > 0; i--) printf("0");
}
if(E - 3 > index) {
int i;
for(i = 1; i < index + 3; i++) {
if(i != 2) printf("%c", str[i]);
}
printf(".");
int a = i;
for(a; a < E; a++) {
printf("%c", str[a]);
}
}
} else if(flag2 == false) { //指数为负
printf("0.");
for(int i = 0; i < index - 1; i++) { //输出(index - 1)个0
printf("0");
}
printf("%c", str[1]); //输出整数部分的数字
for(int i = 3; i < E; i++) {
if(i != E && i != E + 1) {
printf("%c", str[i]);
}
}
}
return 0;
}
PAT B1024/A1073 科学计数法的更多相关文章
- 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 1060 比较科学计数法
trick: 1.前导0 如:000001,000.000001 2.出现0时也要按照科学计数法输出 e.g. 4 00000.00000 0001 NO 0.0000*10^0 0.1*10^1 3 ...
- PAT Basic 1024 科学计数法 (20 分) Advanced 1073 Scientific Notation (20 分)
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...
- PAT乙级 1024 科学计数法
思路 1.尝试失败:一开始想打算把结果直接存在一个字符串中,后来发现当指数大于0的时候还需要分别考虑两种情况,工程量巨大,尝试失败,于是借鉴了其他大佬思路,写出了ac代码 2.ac思路:首先取指数的绝 ...
- PAT B1024科学计数法
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...
- C#版 - PAT乙级(Basic Level)真题 之 1024.科学计数法转化为普通数字 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. PAT Bas ...
- PAT 1024 科学计数法 (20)(精简版代码+思路+推荐测试样例)
1024 科学计数法 (20)(20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+, ...
- PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20)
PAT (Basic Level) Practise (中文)- 1024. 科学计数法 (20) http://www.patest.cn/contests/pat-b-practise/1024 ...
随机推荐
- kubeadm进行K8S集群部署
环境说明: 节点类型 主机名 管理ip master master 192.168.2.10 nodes node1 192.168.2.1 ...
- nc浏览器的十宗罪
1.收藏夹.nc浏览器收藏夹无法导出或者导出困难,十分恶心.其他的小众软件都有这个简单的功能,某天我突然想到为什么手机nc浏览器连个导出收藏夹的功能都没有,并不是不注重用户体验,或则导功能很难实现不会 ...
- Qt 单元测试
使用Qtcreator 自带的单元测试工具框架QTestlib进行测试. 一.创建一个单元测试程序 new project->other project ->Qt unit test ...
- 1.springAOP原理分析
环境:jdk1.8 + spring boot 2.0.9.RELEASE Spring AOP的实现本质上就是代理Proxy + 一系列的拦截器 使用@Aspect,引入依赖 <depende ...
- java.io.IOException: Cleartext HTTP traffic to xxx.xxx.xxx.xxx not permitted
java.io.IOException: Cleartext HTTP traffic to xxx.xxx.xxx.xxx not permitted 转 https://blog.csdn.net ...
- MYSQL通过循环向数据库中插入数据
BEGINdeclare i int default 305;declare a char(255);REPEATset a=concat("测试机构00",cast(i as c ...
- easyU之tabs选项卡
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...
- C# 程序的关闭 讲究解释
程序的关闭是很讲究的,处理的不好的话,将软件连续开启和关闭,当数次后在启动软件后程序会崩溃.或者程序退出很慢.细节决定成败,一款好的软件应该从各方面都要做严格地反复地推敲,力争做到无可挑剔. 有 ...
- kettle在linux安装
1 首先保证linux上面已经安装jdk,因为kettle是用Java开发,依赖于jdk 2 将pdi-ce-7.1.0.0-12.zip 上传到linux对应文件夹下面(笔者上传到/opt/kett ...
- asyncio模块实现单线程-多任务的异步协程
本篇介绍基于asyncio模块,实现单线程-多任务的异步协程 基本概念 协程函数 协程函数: 定义形式为 async def 的函数; aysnc 在Python3.5+版本新增了aysnc和awai ...