蓝桥杯 门牌制作

蓝桥杯 门牌制作_第1张图片

思路:便利所有数字并检索每个数字中出现’2’的次数并累加。

法一 :将每个数字都转为字符数组并检索数组中出现次数。

#include
#include//itoa所需要的库函数
using namespace std;

unsigned int c_in_str(const char* str, char ch) {

	unsigned int count = 0;

	while (*str) {
		if (*str == ch) {
			count++;
		}
		str++;
	}
	return count;
}


int main()
{

	int num = 0;
	char s[5];
	for (int i = 1; i <= 2020; i++) {
		_itoa_s(i, s, 10); // itoa(int,char,要转换的进制数)
		num += c_in_str(s, '2');
	}
	
	cout << num;
	return 0;

	
}

这里重点有一个stdlib.h库函数itoa(int,char,要转换的进制数)可以实现int–>char[]的转换。

法二:这个不同点在于它求每个数中‘2’出现的次数的方法,它是通过取余获取每位数字方法实现的。

#include

using namespace std;

int main()
{

	int num = 0;//记录‘2’出现次数
	for (int i = 1; i <= 2020; i++) {

		int temp = i;
		while (temp) {
			if (temp % 10 == 2)num++;
			temp /= 10;
		}
	}
	cout << num;
	return 0;

}

你可能感兴趣的:(算法,算法)