C++ 检查一个数字是否是简单的
simber定义为正整数,其中任何奇数(如果存在)出现奇数次,1414414为simber。4是偶数,出现四次;1是奇数,出现三次 以下是我的变量:C++ 检查一个数字是否是简单的,c++,C++,simber定义为正整数,其中任何奇数(如果存在)出现奇数次,1414414为simber。4是偶数,出现四次;1是奇数,出现三次 以下是我的变量: int is_simber(int n) { int numberOfTimes = 0, length = 1, x = n; bool answer; vector <int> nmbrs = vector <int>(); //get how many digits are
int is_simber(int n)
{
int numberOfTimes = 0, length = 1, x = n;
bool answer;
vector <int> nmbrs = vector <int>();
//get how many digits are in the integer
do
{
x /= 10;
length++;
}
while(x != 0)
//get the digits in the integer
for(int i = 0; i<length; i++)
{
nmbrs.push_back(((n/10^i) % 10);
}
//checking how many times a digit occurs and also testing to see if the digits
//meet the requirements
for(int i = 0; i<length; i++)
{
for(int j = 0; j<length; j++)
{
if (nmbrs.at(i) == nmbrs.at(j))
{
numberOfTimes++;
}
}
if (nmbrs.at(i) % 2 == 0 && numberOfTimes % 2 == 0)
{
answer = true;
}
else if(nmbrs.at(i) % 2 == 1 && numberOfTimes % 2 == 1)
{
answer = true;
}
else if(nmbrs.at(i) % 2 == 0 && numberOfTimes % 2 == 1)
{
answer = false;
break;
}
else if(nmbrs.at(i) % 2 == 1 && numberOfTimes % 2 == 0)
{
answer = false;
break;
}
}
return answer;
}
int是simber(int n)
{
int numberOfTimes=0,length=1,x=n;
布尔回答;
向量nmbrs=向量();
//获取整数中的位数
做
{
x/=10;
长度++;
}
而(x!=0)
//获取整数中的数字
对于(int i=0;i
您的代码已被删除
^
是。你不能期望它产生pow(10,i)
。所以将nmbrs.push_-back((n/10^i)%10);
替换为nmbrs.push_-back((n/pow(10,i))%10);
当我能够删除编译错误时,我意识到您的代码也有逻辑错误。正如您给定的simber定义,int is_simber(int n)
应该是公平和简单的
bool是simber(int n)
{
如果(n我对的定义很简单
inline bool is_even(int n) { return n % 2 == 0; }
bool is_simber(int n) {
if (n < 0) return false;
int digits[10] = {0};
for (; n; n /= 10) ++digits[n % 10];
for (int i = 0; i < 10; i += 2)
if (!is_even(digits[i]) && is_even(digits[i + 1])) return false;
return true;
}
inline bool是偶数(int n){返回n%2==0;}
布尔是西姆伯(国际n){
如果(n<0)返回false;
整数位数[10]={0};
对于(;n;n/=10)+位数[n%10];
对于(int i=0;i<10;i+=2)
如果(!is_偶数(数字[i])&&is_偶数(数字[i+1])返回false;
返回true;
}
是时候进行一些调试了。你需要找出问题所在。或者如果有多个问题,第一个问题在哪里。插入一些打印输出,看看哪里出了问题。do/while循环计算的长度正确吗?第一个for循环的数字正确吗?即使是false,它也会打印为true。让我检查循环。这是吗你的实际代码被复制和粘贴了吗?我看到一个语法错误,它甚至会阻止它编译。是的。它在哪里?你告诉我们它在哪里(它是你的代码,你应该编译并运行它,知道它不工作)。你也没有解释具体的问题。我的代码有什么问题?它应该做这件事。如果你不告诉我们你提供了什么输入以及它在做什么,而不是它应该做什么,那就没有意义了。如果你想在这里得到帮助,请发布你的实际代码,清楚地说明问题,提供重现问题所需的输入,然后问一个具体的问题:“我的代码怎么了?”与具体值相差甚远。偶数值呢?建议不要使用pow
,因为它是一个浮点函数,因此在与整数一起使用时可能会产生舍入错误。Rafaf,它不编译。它有一个关于增量的警告和一个关于标记“==”的错误,它现在编译了,但有错误的答案。我将尝试修复我看到错误的部分。