您的位置:首页 > 其它

PATB1024:科学记数法

2016-09-04 20:04 267 查看

PATB1024:科学记数法

【思路】:

输出的字符串由几部分组成 通过 i str[i] 来索引输出字符串

每部分 需要满足什么条件 才输出

常用的是 str[i] pos pos-3 表示长度 exp为字符–》转换成数字

【知识点】

每部分 需要满足什么条件 才输出

for (int i = 1; i < pos; i++)//也是分成3 部分 思考每部分满足什么条件是输出什么
{
if (str[i] == '.')
{
continue;
}
cout << str[i];
if (i== exp +2 && pos-3 > exp  ) //i== exp +2为放小数点的位置   pos-3数字个数要比 指数部分位数要大
{
cout << ".";
}
}


跳过循环countine

for (int i = 1; i < pos; i++)
{
if (str[i] == '.')
{
continue;
}
cout << str[i];
}


* exp为字符–》转换成数字*

for (int i = pos + 2; i < strlen(str); i++)
{
exp = exp * 10 + str[i] -'0';
}


【知识点】

找到特定字符的位置索引

for (int i = 0; i < strlen(str); i++)
{
if (str[i] == 'E')
{
pos = i;
break;//及时退出
}
}


【参考答案】

//科学计数法

//给定字符串 按照要求输入字符 和计算控制说得。对于字符串主要是 长度是多少 循环多少次 该字符的位置是什么。等等 此处应该有总结。

void B1024(){
char str[10100];
cin >> str;
int pos,exp=0;
///找到E的位置 pos-3是个数
for (int i = 0; i < strlen(str); i++) { if (str[i] == 'E') { pos = i; break;//及时退出 } }//将指数的字符转换成数字
for (int i = pos + 2; i < strlen(str); i++)
{

if (str[0] == '-'){
cout << '-';
}

//输出exp = exp * 10 + str[i] -'0';
}

if (str[pos+1] == '-') //分成三部分 思考这个字符串 应该分成几部分 每部分由那些字符生成
{
cout << "0.";
for (int i = 0; i < exp-1; i++)
{
cout << '0';
}
for (int i = 1; i < pos; i++)
{
if (str[i] == '.')
{
continue;
}
cout << str[i];
}
}
else{
for (int i = 1; i < pos; i++)//也是分成3 部分 思考每部分满足什么条件是输出什么
{
if (str[i] == '.')
{
continue;
}
cout << str[i];
if (i== exp +2 && pos-3 > exp ) //i== exp +2为放小数点的位置
{
cout << ".";
}
}

for (int i = 0; i < exp -(pos-3); i++)
{
cout << "0";
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: