CVTE笔试题 求连续0-n数据中 k(0-9)出现的次数

//题目要求:

//输入 一个0-9的数据k,输入一个整数12,求0-12 中有多少位数是 k (个十百位 等于k)

测试示例:

输入数据为k 和n(以空格隔开); 1 12
输出为:5

解释:[0,1,2,3,4,5,6,7,8,9,10,11,12] 中有5个1 出现,分别是[1,10,11,12]

解题思路:

//1、考虑特殊情况 当k 和 n都是零的时候,直接输出1.
//2、正常情况下,设置外循环从1 遍历到 n,然后嵌套内循环while() 用i对10求余%得r
// 对余数进行判断 k ?= r,相等则满足条件count++,
//3、对i mod 10取整进行循环2步骤,直至i=0,退出内循环,一个数据遍历完毕,在进行外数据++,重复2步骤

//4、最终将遍历结果输出

#include 
using namespace std;

int count(int k, int n)
{
	int i, j, count = 0;
	if (k == 0 && n == 0)
		count++;
	for (i = 1; i <= n; i++)
	{
		j = i;
		while (j != 0)
		{
			if (j % 10 == k)
				count++;
			j = j / 10;
		}
	}
	return count;
}

int main()
{
	int k, n;

	cin >> k >> n;

	int ret = count(k, n);

	cout << ret << endl;
	system("pause");
	return 0;
}

你可能感兴趣的:(简单算法题)