C++ 使用C+中的计数器查找特定数字的发生次数+;

C++ 使用C+中的计数器查找特定数字的发生次数+;,c++,numbers,counter,digit,C++,Numbers,Counter,Digit,我有一个很大的数字,我想从中找出一个特定数字的发生次数。我想知道使用计数器是否有效。我的代码如下: #include <iostream> using namespace std; int main( ) { int number; int n1; int n2; int n3; int n4; int n5; int n6; int n7; int n8; int n9; int n10; int digit; int digitCounter = 0; cout &

我有一个很大的数字,我想从中找出一个特定数字的发生次数。我想知道使用计数器是否有效。我的代码如下:

#include <iostream>
using namespace std;

int main( )
{
int number;
int n1;
int n2;
int n3;
int n4;
int n5;
int n6;
int n7;
int n8;
int n9;
int n10;
int digit;
int digitCounter = 0;


    cout << "Please enter a number between 100 to 2000000000." << endl; 
    cin >> number;

    cout << "Please enter a digit that you want to find the number of occurances." << endl;
    cin >> digit;

    if (number > 0)
    { 
     n1 = number % 10;
     n2 = (number/10) % 10;
     n3 = (number/100) % 10;
     n4 = (number/1000) % 10;
     n5 = (number/10000) % 10;
     n6 = (number/100000) % 10;
     n7 = (number/1000000) % 10;
     n8 = (number/10000000) % 10;
     n9 = (number/100000000) % 10;
     n10 = (number/100000000) % 10;

     if (n1 == digit)
     { digitCounter++;}

     else if (n2 == digit)
     { digitCounter++;}

     else if (n3 == digit)
     { digitCounter++;}

     else if (n4 == digit)
     { digitCounter++;}

     else if (n5 == digit)
     { digitCounter++;}

     else if (n6 == digit)
     { digitCounter++;}

     else if (n7 == digit)
     { digitCounter++;}

     else if (n8 == digit)
     { digitCounter++;}

     else if (n9 == digit)
     { digitCounter++;}

     else if (n10 == digit)
     { digitCounter++;}

     cout<< "The total number of occurances of " << digit << " in " << number <<" is "<<digitCounter<< endl;

     }
        else

        cout<< "You have entered an invalid number."<<endl;



system("pause");
return 0;

}
#包括
使用名称空间std;
int main()
{
整数;
int-n1;
int n2;
int n3;
int n4;
int n5;
int n6;
int n7;
int n8;
int n9;
INTN10;
整数位数;
int数字计数器=0;
库特数;
cout数字;
如果(数字>0)
{ 
n1=数字%10;
n2=(数字/10)%10;
n3=(数字/100)%10;
n4=(数字/1000)%10;
n5=(数量/10000)%10;
n6=(数量/100000)%10;
n7=(数量/1000000)%10;
n8=(数字/10000000)%10;
n9=(数字/100000000)%10;
n10=(数字/100000000)%10;
如果(n1==位)
{digitCounter++;}
否则如果(n2==位)
{digitCounter++;}
else if(n3==位)
{digitCounter++;}
else if(n4==位)
{digitCounter++;}
else if(n5==位)
{digitCounter++;}
else if(n6==位)
{digitCounter++;}
else if(n7==位)
{digitCounter++;}
else if(n8==位)
{digitCounter++;}
else if(n9==位)
{digitCounter++;}
否则如果(n10==位)
{digitCounter++;}

不能你的Else If's必须是If's。就目前情况而言,你只需要通过一个决策声明。一旦找到匹配项,你就出局了

#include <iostream>
using namespace std;

int main()
{
    int number;
    int n1;
    int n2;
    int n3;
    int n4;
    int n5;
    int n6;
    int n7;
    int n8;
    int n9;
    int n10;
    int digit;
    int digitCounter = 0;


    cout << "Please enter a number between 100 to 2000000000." << endl;
    cin >> number;

    cout << "Please enter a digit that you want to find the number of occurances." << endl;
    cin >> digit;

    if (number > 0)
    {
        n1 = number % 10;
        n2 = (number / 10) % 10;
        n3 = (number / 100) % 10;
        n4 = (number / 1000) % 10;
        n5 = (number / 10000) % 10;
        n6 = (number / 100000) % 10;
        n7 = (number / 1000000) % 10;
        n8 = (number / 10000000) % 10;
        n9 = (number / 100000000) % 10;
        n10 = (number / 100000000) % 10;

        if (n1 == digit)
        {
            digitCounter++;
        }

        if (n2 == digit)
        {
            digitCounter++;
        }

        if (n3 == digit)
        {
            digitCounter++;
        }

        if (n4 == digit)
        {
            digitCounter++;
        }

        if (n5 == digit)
        {
            digitCounter++;
        }

        if (n6 == digit)
        {
            digitCounter++;
        }

        if (n7 == digit)
        {
            digitCounter++;
        }

        if (n8 == digit)
        {
            digitCounter++;
        }

        if (n9 == digit)
        {
            digitCounter++;
        }

        if (n10 == digit)
        {
            digitCounter++;
        }

        cout << "The total number of occurances of " << digit << " in " << number << " is " << digitCounter << endl;

    }
    else

        cout << "You have entered an invalid number." << endl;



    system("pause");
    return 0;

}
#包括
使用名称空间std;
int main()
{
整数;
int-n1;
int n2;
int n3;
int n4;
int n5;
int n6;
int n7;
int n8;
int n9;
INTN10;
整数位数;
int数字计数器=0;
库特数;
cout数字;
如果(数字>0)
{
n1=数字%10;
n2=(数字/10)%10;
n3=(数字/100)%10;
n4=(数字/1000)%10;
n5=(数量/10000)%10;
n6=(数量/100000)%10;
n7=(数量/1000000)%10;
n8=(数字/10000000)%10;
n9=(数字/100000000)%10;
n10=(数字/100000000)%10;
如果(n1==位)
{
数字计数器++;
}
如果(n2==位)
{
数字计数器++;
}
如果(n3=位)
{
数字计数器++;
}
如果(n4==位)
{
数字计数器++;
}
如果(n5==位)
{
数字计数器++;
}
如果(n6==位)
{
数字计数器++;
}
如果(n7==位)
{
数字计数器++;
}
如果(n8==位)
{
数字计数器++;
}
如果(n9==位)
{
数字计数器++;
}
如果(n10==位)
{
数字计数器++;
}

cout您可以将数字转换成字符串,然后在字符串中搜索数字,这样更简单。 或者,您可以读取字符串(数字)和字符(数字),然后执行以下操作:

char number[20], digit;
int count = 0, i;
printf("\nEnter a string : ");
scanf("%s", &number);

printf("\nEnter the character to be searched : ");
scanf("%c", &digit);

for (i = 0; number[i] != '\0'; i++) {
  if (number[i] == digit)
     count++;
}

if (count == 0)
  printf("\nCharacter '%c'is not present", digit);
else
  printf("\nOccurence of character '%c' : %d", digit, count);`
试试这个

#include <iostream>

int main(int argc, char **argv) {

  unsigned long long large(0);

  int digitToFind(0);

  std::cout << "enter a large number [100 to 2000000000]" << std::endl;
  std::cin >> large;

  if (large < 100 || large > 2000000000) {
    std::cout << "invalid input." << std::endl;
    return -1;
  }

  std::cout << "enter the digit to find" << std::endl;
  std::cin >> digitToFind;

  if (digitToFind < 0 || digitToFind > 9) {
    std::cout << "invalid input." << std::endl;
    return -1;
  }

  std::size_t counts[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

  while (large > 0) {
    int rem = large % 10;

    counts[rem]++;

    large /= 10;
  }

  std::cout << "number of occurrances of " << digitToFind << " is "
            << counts[digitToFind] << std::endl;

  std::cout << "press enter to continue" << std::endl;
  std::cin.get();
  return 0;
}
#包括
int main(int argc,字符**argv){
无符号长-大(0);
int-digitofind(0);
std::cout大;
如果(大<100 | |大>2000000000){

std::cout一些示例代码包含另一个缺陷:如果数字很小,那么我们得到的零就比需要的多……我们不能假设数字一定很大。 这适用于每个数字,在Python中只是因为我现在更习惯于Python,将其转换为C非常简单:

N = 1230533007
digitToFind = 3
digitCount = 0

while N > 0:
    d = N % 10
    if d == digitToFind:
        digitCount += 1
    N //= 10

print digitCount

为什么不把东西转换成一个字符串,然后在字符串上循环呢?我们不能用字符串来做这件事,只能用mod。谢谢,应该只有一个if和一个loop。我同意,这是一个更好的解决问题的方法。我只是想回答一个问题,就是给定的解决方案出了什么问题。我怀疑它是否真的更简单