ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【PTA-乙级-详解】 1024科学计数法

2022-02-04 18:02:43  阅读:171  来源: 互联网

标签:1024 arr xxx index int 指数 PTA 计数法 小数


前言: 前三十题中 在我的印象里非常少的题是没有写直接搜解法 这个好像是第一个 也是前三十的倒数第二题,后面的反转链表实在不会。。。

#include<iostream>
using namespace std;

// +1.23400E-03  0.00123400  -1.2E+10  -12000000000
int main()
{
	char arr[10000];
	cin >> arr;
	// 先把E的下标记录下来 
	int e = 1;
	while (arr[++e] != 'E')
		;
	int index = 0;
	for (int i = e + 2; arr[i] != '\0'; i++)
	{
		index *= 10;
		index += arr[i] - '0';
	}
	//  index 存储的是指数  e存储的是E的下标位置
	if (arr[0] == '-')
		cout << '-';
	if (!index)
	{
		for (int i = 1; i < e; i++)
		{
			cout << arr[i];
		}
		return 0;
	}
	if (arr[e + 1] == '-')
	{
		cout << "0.";
		while (index - 1)
		{
			cout << '0';
			index--;
		}
		for (int i = 1; i < e; i++)
		{
			if (arr[i] != '.')
			{
				cout << arr[i];
			}
		}
	}
	else
	{
		// +1.23400E-03  0.00123400  -1.2E+10  -12000000000
		cout << arr[1];
		int i = 0;
		for (i = 3; i < index + 3; i++)
		{
			if (i < e)
			{
				cout << arr[i];
			}
			else
				cout << 0;
		}
		if (i < e)
		{
			if (i == index + 3)
				cout << ".";
			cout << arr[i];
		}
		//  1.3333333E+3 
	}
	return 0;
}

fansi:其实并不是特别难的一个题,遇到这种的 首先 用字符,浮点型等组合起来进行输入然后处理是非常不方便且不可行的,用数组是最好的。

输入之后找规律:E只有一个 E后面是指数部分 中间还有一个+-  开头必定有一个+-  

可以用一个整型index存储指数部分  按照指数index对前面的小数进行处理  分类:若指数为负 则前面会出现0.xxx的情况 且 指数为-1 则为0.xxxx  指数为-2  为0.0xxx   xxx为最先给出的小数部分    按照指数的大小把前面的0.00打印出来 再把最先给出的小数除.之外的打印出来 即可    (其实这些规律都是很好找的 举几个例子即可)   若指数为正....  类似的分析方法 拆分为小的部分 然后用代码实现即可。

标签:1024,arr,xxx,index,int,指数,PTA,计数法,小数
来源: https://blog.csdn.net/i777777777777777/article/details/122784666

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有