L1-017 到底有多二 (15 point(s))

Posted Atl212

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了L1-017 到底有多二 (15 point(s))相关的知识,希望对你有一定的参考价值。

  • cnt 写的时候又忘记初始化了,所以又记一次,不需要 cin 输入读取的变量一概都需要初始化。

  • erase() 忘记怎么写了,开始还以为是 erase(\'-\') 但报了一个异常。

    所以看了别人的说明,发现 erase() 函数对 string 来说有两种使用方式,一个是传入一个指向删除元素的迭代器,第二个是指定删除范围的区间。第二种可以用传入下标或者传入迭代器地址,来指定范围。

    C++中string类型的erase()函数详解

    除了 erase() 函数外,想起来插入函数 insert() 如果往字符串里面插入也会用到类似的方法。传入函数的第一第二个参数是 pos len 位置和长度。

    string的insert的用法整理

  • 发现 % 不需要加反斜杠。刚开始还以为这是个转义字符,查了下真正的转义字符有这几个。

#include <bits/stdc++.h>
using namespace std;

int main(){
	double multi = 1, cnt = 0;
	string str;
	cin >> str;
	
	if(str[0] == \'-\'){
		multi *= 1.5;
		// 变为正数
		str.erase(0, 1);
	} 
	if(str[str.size() - 1] % 2 == 0) multi *= 2;
	
	for(auto s: str)
		if(s == \'2\')
			cnt++;
	
	cout << fixed << setprecision(2) << cnt * multi / str.size() * 100 << "%";
}

以上是关于L1-017 到底有多二 (15 point(s))的主要内容,如果未能解决你的问题,请参考以下文章

L1-017 到底有多二 (15 分)天梯赛

题解PTA团体程序设计天梯赛L1-017 到底有多二 (15 分) Go语言|Golang

L1-017. 到底有多二

L1-017. 到底有多二

L1-017.到底有多二

L1-017 到底有多二