不能使布尔函数 C++
can't make bool function c++
问题是:
检查数字是否为素数。
当用户在
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;
}
我认为只考虑非负值是有意义的。否则,您应该在函数内部检查参数是正数还是负数。
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用不带参数的函数访问结构元素
- 代码在main()中运行,但在函数中出现错误
- 内置函数可查看CPP中的成员变量
- 如何获取std::result_of函数的返回类型
- 如何在c++中为模板函数实例创建快捷方式
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗