【问题标题】:can't make bool function c++不能使布尔函数c ++
【发布时间】:2014-02-20 21:12:49
【问题描述】:

问题是:

检查一个数是否为素数。

当用户在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;
}

【问题讨论】:

  • 欢迎来到 StackOverlfow!您是从阅读help 开始的吗?
  • 您的源文件是否有可能是 .c 而不是 .cpp 类型?如果是,则更改它并重试。如果否,请指出您遇到编译错误的行。
  • 欢迎来到 SO。请学习正确格式化代码。在编辑器中使用代码标签{} 来格式化代码。是不是忘了在头文件原型函数的末尾保留;

标签: c++ function boolean


【解决方案1】:

如果您要“拥有一个布尔函数”(也称为“返回一个布尔函数”),您必须做两件事。首先,声明你的函数,让它知道它会返回一个像这样的布尔值:

bool isPrime ( int num )

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

return prime;

现在您可以设置一个等于函数的值,它会返回布尔值,如下所示:

x = isPrime(25);

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

【讨论】:

  • 他/她没有返回一个布尔值,而只是试图打印它。
  • 我看到了,但我相信这只是因为他们不知道如何正确返回值。
  • 可能,但目前他们的代码还有一些其他问题。
【解决方案2】:

根据你的任务

isPrime 是一个以整数为参数的函数 如果参数是素数,则返回 true,否则返回 false。

所以必须声明为

bool isPrime( unsigned int n );

主要是这样称呼的

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

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

可以这样定义

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;
}

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

【讨论】:

  • @Damien Black 我不在乎这是否是作业。:) 有时看别人写的代码比自己写更有用。
  • @VladfromMoscow 我同意达米安的观点。至少你应该使用spoiler
  • @Damien Black 我真的尽力想知道这个问题的答案,所以我创建了这个帐户来寻找正确的答案
  • @Vlad 来自莫斯科 Thanl u soo much 但是我不能在我的作业中正确地解决它,因为这是我的第二门 C++ 课程,我对你的代码一无所知,请你把它简单一点对我来说,我会以不同的方式再次编写我的代码,感谢 alooot 伙计们
猜你喜欢
  • 2013-04-09
  • 2015-05-23
  • 2015-04-12
  • 2018-05-13
  • 1970-01-01
  • 2022-06-16
  • 1970-01-01
  • 2012-07-15
  • 1970-01-01
相关资源
最近更新 更多