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。我同意,这是一个更好的解决问题的方法。我只是想回答一个问题,就是给定的解决方案出了什么问题。我怀疑它是否真的更简单