问题是 :
“编写一个函数来判断一个数是素数还是完全数。”
到目前为止,我已经首先完成了完美的部分,这就是我所拥有的:
#include <iostream>
using namespace std;
bool perfectNumber(int);
int main()
{
int number;
cout<<"Please enter number:\n";
cin>>number;
bool perfectNumber(number);
return 0;
}
bool perfectNumber(int number)
{
int i;
int sum=0;
for(i=1;i<=number/2;i++)
{
if(number%i==0)
{
sum+=i;
}
}
if (sum==number)
return i;
else
return 0;
}
但是,这段代码似乎有错误。
我看过这本书,但没有提到这个话题。
我想获得有关如何修复此代码的建议。
thanks!
bool perfectNumber(number);
这并不调用perfectNumber
功能;它声明了一个名为的局部变量perfectNumber
类型的bool
并用值初始化它number
转换为类型bool
.
为了调用perfectNumber
函数,您需要使用以下内容:
bool result = perfectNumber(number);
or:
bool result(perfectNumber(number));
另一方面:如果您要从流中读取输入(例如cin>>number
),您必须检查以确保从流中提取值成功。就像现在一样,如果您输入asdf
,提取将会失败并且number
将保持未初始化状态。检查提取是否成功的最佳方法就是测试流的状态:
if (cin >> number) {
bool result = perfectNumber(number);
}
else {
// input operation failed; handle the error as appropriate
}
您可以了解有关如何设置和重置流错误状态的更多信息标志的语义basic_ios https://stackoverflow.com/questions/4258887/semantics-of-flags-on-basic-ios。您还应该咨询一本很好的 C++ 入门书籍 https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list了解更多流使用最佳实践。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)