C++ 为什么';计数整数是否返回d的期望值?数字是多少?

C++ 为什么';计数整数是否返回d的期望值?数字是多少?,c++,algorithm,math,codewarrior,C++,Algorithm,Math,Codewarrior,我正在处理代码战中的一个编码问题,我很难从测试值以及它们提供的示例测试中计算出正确的答案! 提示如下: “取一个整数n(n>=0)和一个数字d(0nbDig()是static。为什么通过一个对象调用它?你明白为什么正确的答案分别是4和11吗?(如果不明白,那意味着你不明白你应该编码什么,所以你没有成功的希望).int j=i;-->int j=i*i;,ii是,因为n代表数字,d代表我们正在计数的指定数字,因此在调用nbDig(10,1)的情况下有10个整数被计算出来,然后被平方,但是指定的要计

我正在处理代码战中的一个编码问题,我很难从测试值以及它们提供的示例测试中计算出正确的答案! 提示如下:
“取一个整数n(n>=0)和一个数字d(0
nbDig()
static
。为什么通过一个对象调用它?你明白为什么正确的答案分别是4和11吗?(如果不明白,那意味着你不明白你应该编码什么,所以你没有成功的希望).
int j=i;
-->
int j=i*i;
i
-->
i是,因为n代表数字,d代表我们正在计数的指定数字,因此在调用nbDig(10,1)的情况下有10个整数被计算出来,然后被平方,但是指定的要计数的数字是1,所以所有带“1”的整数都应该被计数掉。好了,现在我明白了我弄糟的地方,我需要在数字被计数之前合并数字的平方--,我修正了它们,现在它是一个关--,而我确实看到了你所说的输出ut仍然是一样的,并没有真正改变程序的任何内容
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include<array>
#include<assert.h>
#include<fstream>
using namespace std;

class CountDig
{
public:
    static int nbDig(int n, int d);
};

int CountDig::nbDig(int n, int d)
{
    int count = 0;
    for (int i = 0; i < n; i++)
    {
        int j = i;
        while (j > 0)
        {
            if (j % 10 == d)
                count++;
            j /= 10;
        }
    }
    return count;
}
int main()
{
    CountDig cnt;
    //count.nbDig();
    cout << cnt.nbDig(10, 1) << endl;
    system("PAUSE");
    return 0;
}
int countDigit( int num, int digit ) {
    if( num == 0 && digit == 0 ) return 1; // special case initial condition for 0 and 0
    int count = 0;

    int j = i;
    while (j > 0)
    {
        if (j % 10 == d)
            count++;
        j /= 10;
    }
  return count;
}