C++ 计算素数的小程序不起作用
完成后,这个程序将输出最大1000个素数,这是一个相当简单的程序,尽管我已经多次阅读语法,但它仍然不起作用 该代码自最初发布以来已被编辑,现在运行时出现0个错误,但它不会显示正确的结果,而是一次又一次地显示008D1389 这是完整的代码:C++ 计算素数的小程序不起作用,c++,visual-studio,syntax,visual-studio-2015,syntax-error,C++,Visual Studio,Syntax,Visual Studio 2015,Syntax Error,完成后,这个程序将输出最大1000个素数,这是一个相当简单的程序,尽管我已经多次阅读语法,但它仍然不起作用 该代码自最初发布以来已被编辑,现在运行时出现0个错误,但它不会显示正确的结果,而是一次又一次地显示008D1389 这是完整的代码: #include <iostream> using namespace std; //funtion prototypes int output_number, number = 1, value = 1, i; bool is_this_n
#include <iostream>
using namespace std;
//funtion prototypes
int output_number, number = 1, value = 1, i;
bool is_this_number_prime(int number_in_question);
bool does_it_have_factors(int numerator, int denominator);
int prime_number_sender();
int prime_number_output();
//function definitions
int prime_number_output()
{
int value;
value = prime_number_sender();
return value;
}
int prime_number_sender()
{
int value = number;
if (is_this_number_prime(number) == true)
return value;
else
return 0;
}
bool is_this_number_prime(int number_in_question)
{
bool answer = true;
int i;
for (i = 2; i <= number; i++)
{
if (does_it_have_factors(number, i) == true)
answer = false;
}
return answer;
}
bool does_it_have_factors(int numerator, int denominator)
{
bool result = false;
if (numerator % denominator == 0){
bool result = true;
}
return result;
}
int main() {
bool is_this_number_prime(int number_in_question);
bool does_it_have_factors(int numerator, int denominator);
int prime_number_sender(int number_in_question);
int prime_number_output();
int output_number = prime_number_output();
int i;
for (i = 2; i <= 1000; i++)
{
cout << prime_number_output << endl;
number++;
}
return 0;
}
#包括
使用名称空间std;
//功能原型
int输出_数,数=1,值=1,i;
布尔是这个素数(问题中的整数);
布尔没有因子(整数分子,整数分母);
整数素数发送器();
整数素数输出();
//函数定义
整数素数输出()
{
int值;
值=素数\发送器();
返回值;
}
整数素数发送器()
{
int值=数字;
如果(这是数字吗?)素数(数字)==true
返回值;
其他的
返回0;
}
布尔是这个素数(问题中的整数)
{
bool-answer=true;
int i;
对于(i=2;i,您的代码为我生成了很多错误
main.cpp | 48 |错误:函数“int prime_output(int)”的参数太少|
您已将prime\u输出
声明为int prime\u输出(int-value)
,但立即使用局部变量value
对参数value
进行阴影处理。您不妨删除该参数,这对您没有任何好处
main.cpp | 52 |错误:函数“int perfect_output(int)”的参数太少|
与上面的问题相同。但是,看起来您正在尝试直接修改参数,这与您的操作方式不同。请尝试使用引用:
int perfect_output(int& value)
这个函数本身也很奇怪。你没有输出任何东西或做任何计算。我觉得你可能还没有写完
函数“void user_selection()”中的main.cpp:|
main.cpp | 59 |错误:此处不允许在“{”标记之前使用函数定义|
这可能就是你的问题所提到的错误所在。你的格式使你很难直接看到这一点;幸运的是,Code::Blocks告诉我问题出在哪里
void user_selection()
{
您永远不会关闭它。(更准确地说,您的右大括号一直位于文件的末尾,在那里它会触发另一个不匹配错误。)
main.cpp | 87 |错误:应在“}”标记之前声明|
请参见上文。这是以某种方式从user\u selection
中分离出来的右大括号。请尝试更小心地设置代码格式;您越容易阅读它,就越容易在编译器执行之前看到类似的内容
main.cpp | 63 |错误:在“声明/定义int prime_输出(int value);
之前应使用主表达式,但将其用作prime_输出();
。value应该是局部变量,而不是参数。修复缩进,您将看到void user_selection()
没有结束符)
.off-topic:在main()
,void user_selection();
只是一个(局部范围的)函数原型,因此它实际上并不调用函数。您需要将其更改为user_selection();
(删除void
)。感谢您的帮助,我已使用上述技术重新设计了程序,问题已编辑为包含新代码。没有错误,这是令人鼓舞的,但程序仍然无法正确运行。我无法识别错误输出,因此我不确定从何处开始故障查找过程。可以吗您看到了这段代码失败的地方??如果您的代码与上面发布的代码相同,我可以看到六个需要修复的地方。但是,我建议您提出一个新问题,因为您的编译错误,这个问题的主题,已经解决了。
for (i = 2; i <= 1000; i++)//if numbers are 1 off, make i = 1.