C++ 布尔函数出错;控制达到非无效函数的末尾“;
我看了其他相关的问题,但不太明白 我正在使用XCODEX.为C++类编写控制台项目。 该程序的目标是评估一个数是否为素数。 (我意识到我的函数的逻辑是关闭的,这只是目前的一个工作想法) 有人能告诉我我做错了什么吗?除了我自己设计的数学部分外,我完全按照课堂笔记做C++ 布尔函数出错;控制达到非无效函数的末尾“;,c++,function,compiler-errors,boolean,C++,Function,Compiler Errors,Boolean,我看了其他相关的问题,但不太明白 我正在使用XCODEX.为C++类编写控制台项目。 该程序的目标是评估一个数是否为素数。 (我意识到我的函数的逻辑是关闭的,这只是目前的一个工作想法) 有人能告诉我我做错了什么吗?除了我自己设计的数学部分外,我完全按照课堂笔记做 // Assignment 6 - Prime Number // 9-28-17 #include <iostream> #include <cmath> using namespace std; bool
// Assignment 6 - Prime Number
// 9-28-17
#include <iostream>
#include <cmath>
using namespace std;
bool primeCheck(int); //function prototype
int main ()
{
int num; // declares number for input
cout << "Enter an integer to see if it is prime. ";
cin >> num;
while (num < 1) // validation loop
{
cout << "Invalid. Enter an integer. ";
cin >> num;
}
if (primeCheck(num))
cout << num << " is not prime" << endl;
else
cout << num << " is prime" << endl;
return 0;
}
bool primeCheck(int val) // function to check for primality
{
bool status;
if ((val %2 != 0) || (val %3 != 0) || (val %5 != 0 )
|| (val %7 != 0) || ((sqrt(val)) != 0))
status = false;
else
status = false;
}
//赋值6-素数
// 9-28-17
#包括
#包括
使用名称空间std;
布尔素数检查(int)//功能原型
int main()
{
int num;//声明输入的数字
cout>num;
while(num<1)//验证循环
{
cout>num;
}
if(primeCheck(num))
cout您没有从primeCheck返回任何内容。仅将结果分配给status是不够的,您需要在函数末尾写入返回状态
,以便if确切知道它应该返回到调用primeCheck的任何内容
bool primeCheck(int val)
{
bool status;
if (val %2 != 0 || val %3 != 0 || val %5 !=0 || (val %7 != 0 && (sqrt(val)) != 0))
status = false;
else
status = false;
return status;
}
我还认为你可能犯了一个错误,无论如何,你可以做一些事情来改进它
您的所有分支(如果if
和else
)都将false
分配给状态
。假设第一个分支(如果if
为真
)应该将真
分配给状态
通常情况下,最好在if
和else
语句中使用花括号。这样可以明确哪些代码属于所讨论的分支:
if ( foo )
doSomething();
doSomethingElse();
编译器实际上会将其解释为:
if ( foo ){
doSomething();
}
doSomethingElse();
实际上,您不需要声明bool status
或为其指定true
或false
。您可以直接返回结果。尽管这只是一些人的风格问题
考虑到这一点,下面是您函数的改进版本:
bool primeCheck(int val)
{
if (val %2 != 0 || val %3 != 0 || val %5 !=0 || (val %7 != 0 && (sqrt(val)) != 0)){
return true;
} else {
return false;
}
}
您尚未从primeCheck返回任何内容。仅将结果分配给status是不够的,您需要在函数末尾写入return status
,以便if确切知道它应该返回到调用primeCheck的任何对象
bool primeCheck(int val)
{
bool status;
if (val %2 != 0 || val %3 != 0 || val %5 !=0 || (val %7 != 0 && (sqrt(val)) != 0))
status = false;
else
status = false;
return status;
}
我还认为你可能犯了一个错误,无论如何,你可以做一些事情来改进它
您的所有分支(如果if
和else
)都将false
分配给状态
。假设第一个分支(如果if
为真
)应该将真
分配给状态
通常情况下,最好在if
和else
语句中使用花括号。这样可以明确哪些代码属于所讨论的分支:
if ( foo )
doSomething();
doSomethingElse();
编译器实际上会将其解释为:
if ( foo ){
doSomething();
}
doSomethingElse();
实际上,您不需要声明bool status
或为其指定true
或false
。您可以直接返回结果。尽管这只是一些人的风格问题
考虑到这一点,下面是您函数的改进版本:
bool primeCheck(int val)
{
if (val %2 != 0 || val %3 != 0 || val %5 !=0 || (val %7 != 0 && (sqrt(val)) != 0)){
return true;
} else {
return false;
}
}
请拍摄并阅读。请提供相关代码。欢迎访问SO。您没有一个分支中的return
?如果没有a,就不可能猜到更多。另外请。请将代码作为代码,而不是图像。对不起,各位,我将在将来进行巡演并对问题进行适当的格式化。我计划在这里进行多次。缩进是ey电子测量请阅读。请提供相关代码。欢迎访问SO。您没有一个分支机构中的返回值
?如果没有a,就不可能猜到更多。另外,请将代码作为代码,而不是图像。对不起,各位,我将在将来进行巡演并对问题进行适当的格式化。我计划在这里进行一段时间ion是目测,你甚至不需要,如果,你可以做返回(val%2!=0 | | | val%3!=0 | | val%5!=0 | |(val%7!=0&(sqrt(val))
实际计算也很可疑。我怀疑OP想要val%7!=0&(sqrt(val))!=0
,因为这是(bool-logical\u和double)不等于0
你甚至不需要如果
,你可以做返回(val%2!=0 | | | val%3!=0 | | val%5!=0 | |(val%7!=0&&(sqrt(val));
实际计算也很可疑。我怀疑OP想要val%7!=0&(sqrt(val))!=0
,因为这是(bool\u和double)不等于0