[英]C++ isPrime function: How can I return a Boolean value from a function that takes an integer parameter?
我必须创建一个 function ,它接受一个名为 number 的 integer 参数,并且 function 将检查 number 是否为质数。 一切正常,但用户的 output 将是 0 或 1,分别为假和真。 但是,如果数字是否为素数,我如何将其更改为分别返回“True”或“False”。
这是我的代码:
#include<iostream>
int isPrime(int);
int main()
{
int number = 3;
std::cout << isPrime(number);
return 0;
}
int isPrime(int number)
{
bool isPrime = true;
if(number < 0)
std::cout << "Number must be a positive integer.\n";
else if(number == 0 || number == 1)
isPrime = false;
else
{
for(int divisor = 2; divisor <= number / 2; divisor++)
{
if(number % divisor == 0)
{
isPrime = false;
break;
}
}
}
return isPrime;
}
首先,您的 function 应该返回bool
而不是int
:
bool isPrime(int number) ...
接下来,您需要告诉cout
您要将 boolean 值打印为true
或false
而不是1
或0
。 这可以通过std::boolalpha
来完成:
std::cout << std::boolalpha << isPrime(number);
为此,您必须#include <ios>
。
要回答评论中的一些问题:
如果 function 的类型是 int 而不是 bool,会出现什么问题?
类型系统的全部意义在于表达和限制程序的行为。 如果您调用 function,您最好知道传递给 function 的内容以及 function 返回的内容。 类型可以帮助你。
以您的isPrime
function 为例。 假设您没有写 function 但其他人写了,您只是将它用作库。 您会看到 function 签名int isPrime(int);
. function 将int
作为参数,您可能会猜到该参数是什么:您要检查的数字。
现在看看返回类型int
。 这是什么意思? function 名称isPrime
表示 function 回答了一个简单的是/否问题:给定的数字是质数吗? 但是, int
可以表示的不仅仅是yes
或no
。 例如,如果 function 返回2
或-1000
是什么意思(记住:你没有写这个 function 并且你看不到它的实现)? 哪个值代表yes
,哪个no
? 如果您将该 function 的返回类型更改为bool
,该类型只有 2 个可能值: true
或false
,您会立即了解返回值的含义。
我要在主 function 中打印出来吗
这更像是一个设计问题,并且始终取决于您非常具体的用例。 仅给出问题中的代码:是的。 您将业务逻辑(进行主要检查的部分)与 IO / 用户交互部分分开。 通常,这使代码更具可读性和可调试性,这是软件开发的两个非常重要的方面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.