栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

pta乙级1024科学计数法(检测点5段错误,有没有大佬帮帮忙)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pta乙级1024科学计数法(检测点5段错误,有没有大佬帮帮忙)

思路:

1.先看最前面的正负号。

2.找到E。

3.根据E后面跟着的符号进行分类,主要判断小数点往哪移动,或者是否需要补小数点。

4.如果是负号,则必然要补0和小数点;

  反之,如果是正号,则要判断需要移动的小数点位数是否大于后面的长度(用来判断是否需要小数点)移动的时候利用数组逐项移动,若要去除最后一个多余的,未被覆盖的数,用pop.back()即可。

#include
using namespace std;
int main()
{
	string science,num;
	cin>>science;
	if(science[0]=='-') cout<<'-';
	int bit=0,i=0,w=0;
	while(science[++i]!='E')
	{
		num+=science[i];
		bit++;
	}
	int temp=i;
	while(science[temp+2]!='')
	{
		w=w*10+(science[temp+2]-'0');
		temp++;
	}
	if(science[++i]=='-')
	{
		for(int j=0;j=1;j--) num[j+1]=num[j];
		num[1]='.';
	}
	else if(science[i]=='+')
	{
		if(w>=bit-2)
		{
			for(int j=2;j<2+w;j++) num[j-1]=num[j];
			num.pop_back();
			for(int k=1;k<=w-bit+2;k++)
			num+='0';
	    }
		else if(w 

第一个错误(检测点2,6答案错误):后面的指数不一定只有两位,也可能为更大的数字。


第二个错误(检测点5段错误):这玩意为啥是段错误。


似乎知道为啥了,我输入+9.34E+971时pta测试台显示堆栈溢出了,查一查为什么。


测试出来指数极限似乎是55。超出55就会溢出。


不行,还是整不明白。麻了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/302690.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号