不能使布尔函数 C++

can't make bool function c++

本文关键字:C++ 函数 布尔 不能      更新时间:2023-10-16

问题是:

检查数字是否为素数。

当用户在switch中选择此选项时,程序会要求用户输入一个整数,然后将其传递给名为isPrime的函数。 isPrime 是一个函数,它将整数作为参数,如果参数是素数,则返回 true,否则返回 false。

在文件 (.h) 中,原型是

void isPrime ( int y )
<小时 />

我认为我得到的错误是因为函数的类型。

void isPrime(int num)
{
    bool prime = true;
    int i = 2;
    {
        if (num == 2)
            cout << prime;
    }
    while (i <= num - 1)
    {
        if (num % i == 0)
        {
            cout << false;
        }
        i++;
    }
    if (i == num)
        cout << prime;
}
<小时 />

只有正数

我在另一种方式,但又一次它不起作用?

<小时 />
bool isPrime ( int num )
{
bool prime = true;
int i=2;
{if (num == 2)
    return prime;
}
while(i<=num-1)
{
if(num%i==0)
{
return false;
}
i++;
}
if(i==num)
return prime;
}

如果你要"有一个布尔函数"(也称为"返回布尔值"),你必须做两件事。首先,声明你的函数,以便它知道它将返回如下布尔值:

bool isPrime ( int num )

然后在函数末尾return一个布尔值,如下所示:

return prime;

现在你可以设置一些东西来等于函数,它会得到布尔值,就像这样:

x = isPrime(25);

x将是布尔值false(假设您的素数代码正常工作)。

根据您的作业

isPrime 是一个将整数作为参数的函数,并且 如果参数是质数,则返回 true,否则返回 false。

所以它必须声明为

bool isPrime( unsigned int n );

总的来说,你以类似的方式称呼它

std::cout << n << " is prime -> " << isPrime( n ) << std::endl;

所以你的函数是Prime是错误的。

可以按以下方式定义

bool isPrime( unsigned int n )
{
   bool prime = ( n == 2 ) || ( n % 2 && n != 1 );
   for ( unsigned int i = 3; prime && i * i < n; i += 2 )
   {
      prime = value % i != 0;
   }
   return prime;
}

我认为只考虑非负值是有意义的。否则,您应该在函数内部检查参数是正数还是负数。