[英]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.