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 ...
随机推荐
- Codeforces 869E. The Untended Antiquity (二维Fenwick,Hash)
Codeforces 869E. The Untended Antiquity 题意: 在一张mxn的格子纸上,进行q次操作: 1,指定一个矩形将它用栅栏围起来. 2,撤掉一个已有的栅栏. 3,询问指 ...
- 【java设计模式】-07适配器模式
适配器模式 定义: 将一个类的接口转换成客户希望的另外一个接口.适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 类型: 结构型模式 应用实例: 1.JAVA JDK 1.1 提供 ...
- addEventListener 事件监听器 冒泡事件)
addEventListener 事件监听器 (冒泡事件) 1.后面绑定的事件照样会执行 2.不会被覆盖 3.调用者是事件源but.addEventListener 4.参数1,事件名(不带on ...
- 【APUE】第3章 文件I/O (3) 文件共享、原子操作、函数dup/dup2、函数sync/fsync/fdatasync、函数fcntl、函数ioct1、目录/dev/fd 使用说明
1.文件共享 UNIX系统支持在不同的进程间共享打开文件.为了说明这种共享,以下介绍内核用于所有I/O的数据结构. 内核使用3种数据结构表示打开文件,它们之间的关系决定了在文件共享方面一个进程对另一个 ...
- H5最佳格式
<!doctype html><html lang="en"><head> <meta charset="UTF-8" ...
- chrome获取xpath元素-f12工具
Chrome浏览器获取XPATH的方法----通过开发者工具获取 引用源:https://blog.csdn.net/li6727975/article/details/46126079 版权声明 ...
- Leetcode题目121.买卖股票的最佳时机(简单)
题目描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出 ...
- JS基础_call和apply
call()和apply() - 这两个方法都是函数对象的方法,需要通过函数对象来调用 - 当对函数调用call()和apply()都会调用函数执行 - 在调用call和apply可以将一个对象指定为 ...
- Docker 数据管理(Volumes)
Docker 容器产生的数据在可写层,如果不通过 docker commit 生成新的镜像,使得数据成为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了. Docker 提供了三种数据 Mo ...
- linux中安装python
1.首先切换目录 大型的软件一定要安装在/ opt中 规范 cd /opt 2.下载python3的源码 wget https://www.python.org/ftp/python/3.6.2/P ...