我看了其他相关的问题但却无法理解它 我正在使用xcode为我的c ++类编写一个控制台项目。
该计划的目标是评估一个数字是否为素数。 (我意识到我的功能的逻辑是关闭的,它现在只是一个工作的想法) 谁能告诉我我做错了什么?我完全按照课堂笔记,除了我自己设计的数学部分......
// 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;
}
答案 0 :(得分:0)
您还没有从primeCheck返回任何内容。简单地将结果分配给状态是不够的,您需要在函数末尾写return status
,以便确切知道它应该返回到什么调用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
分配给status
。可能是第一个分支(if
为true
时)应该将true
分配给状态?
通常,在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;
}
}