我无法编译为什么这段代码无效的原因。我是C ++的新手,有人可以帮忙吗? 我收到了错误:"警告:控制可能到达结束 非空函数[-Wreturn-type]"
该功能无法正常工作 (我需要调用一个布尔函数)
bool isprime(int num) {
if (num == 2)
return true;
else if (num%2 == 0)
return false;
}
int main()
{
int num,count=0;
cout<<"Enter a number greater than 1 and less than 100: ";
cin>>num;
if (num<=1){
cout<<"Oh nooooooooo, " << num << " is too small :(\n";
return 0;
}
if (num>=100){
cout<<"Oh nooooooooo, " << num << " is too large :(\n";
return 0;
}
if (isprime(num) == true) {
cout << "True " << num <<" is a prime number\n"; }
else if (isprime(num) == false) {
cout << "False " << num <<" is not a prime number\n"; }
return 0;
}
答案 0 :(得分:3)
您的代码的主要问题是您不能处理isprime()函数中的所有可能情况。有1到100之间的数字未被评估:3,5,7和所有其他奇数。
- &GT;从语法上讲,问题是对于这些输入,函数中没有return语句。
- &GT;从语义上讲,您的函数不会计算这些数字是否为素数。有关计算素数的概念上相当简单的算法,请参阅http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
答案 1 :(得分:1)
代码完全错误。这不会检查素数。我建议你阅读一本数学书籍,它甚至在尝试编写代码来检查素数之前,详细描述素数及其属性。你的功能是检查数字是否是奇数。奇数不一定是素数,例如数字9,这不是素数但你的代码定义它。
答案 2 :(得分:-2)
错误意味着它可能会在没有返回任何内容的情况下到达函数的末尾。
只需删除else if并让它返回false。
答案 3 :(得分:-4)
你对isprime的逻辑是不可靠的。所有偶数都是素数,即if(x%2 == 0)返回(true); 在循环测试中所有奇数3向上
if(x%odd == 0)return(true); 否则if(odd&gt; = x)返回(false);
这不是一种有效的方法,但它会起作用。