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

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

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

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

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

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

    string的insert的用法整理

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

    image

#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 << "%";
}

posted on 2021-10-05 09:37  Atl212  阅读(24)  评论(0编辑  收藏  举报

导航