这道C++编程题为什么老是编译不通过?

题目:编写筛选查找素数函数:
  void sieve(bool isPrime[], int n)
  其中isPrime[n]为一个布尔型数组,n为数组大小。由于2是第一个素数,所以设置isPrime[0]和isPrime[1]的值为
false,并设置其余的元素初值为true。然后对从4到n-1的每一个i,判断i是否能够被2整除,如果i能够被2整除,则设置isPrime[i]
为false。对从2到n/2的每一个可能的数值重复以上处理,当操作结束时,所有值为true的isPrime[i]所对应的i就是素数,它们将是从筛
子中掉下来的。
  测试程序:
  #include <iostream>
  using namespace std;
  void sieve(bool isPrime[], int n)
  {
  //...请补充完整
  }
  void Disp(bool a[], int n)
  {
  for (int i=1; i<n; i++)
  if (a[i]) cout << i << " " ;
  cout<<endl;
  }
  int main()
  {
  int n = 0;
  cin >> n;
  if (n < 2)
  return 0;
  bool* isPrime = new bool[n];
  isPrime[0] = false;
  isPrime[1] = false;
  sieve(isPrime,n);
  Disp(isPrime,n);
  return 0;
  }
  输入:一个整数,表示n
  输出:1行,1到n之间的所有素数,两个素数之间用空格隔开,最后一个素数输出后,输出一个空格和空行,输出参见函数Disp的代码。
  例如,当输入20时,输出如下:
  2 3 5 7 11 13 17 19

……求一个标准答案……我写了好几种不同的,在自己的机器上编译通过了,可是交作业过不了TAT……

第1个回答  2013-05-06
/*题目:编写筛选查找素数函数:
  void sieve(bool isPrime[], int n)
  其中isPrime[n]为一个布尔型数组,n为数组大小。由于2是第一个素数,所以设置isPrime[0]和isPrime[1]的值为
false,并设置其余的元素初值为true。然后对从4到n-1的每一个i,判断i是否能够被2整除,如果i能够被2整除,则设置isPrime[i]
为false。对从2到n/2的每一个可能的数值重复以上处理,当操作结束时,所有值为true的isPrime[i]所对应的i就是素数,它们将是从筛
子中掉下来的。
  测试程序:
日期:2013.5.6 */
#include <iostream>
#include <math.h>
using namespace std;
void sieve(bool isPrime[], int n)
{
int flag,i,j; //...请补充完整
for(i=2;i<=n;i++)
{
for(j=2;j<=sqrt(i);j++)
{ flag=1;
if(i%j==0)
{
flag=0;
break;
}
}
if(flag)
isPrime[i]=true;
else
isPrime[i]=false;
}
}

void Disp(bool a[], int n)
{
for (int i=1; i<n; i++)
if(a[i]) cout << i << " " ;
cout<<endl;
}
int main()
{
int n=0;
cout<<"Input n: ";
cin>>n;
if (n<2)
return 0;
bool *isPrime=new bool[n];
isPrime[0]=false;
isPrime[1]=false;
sieve(isPrime,n);
Disp(isPrime,n);
return 0;
}
/*  输入:一个整数,表示n
  输出:1行,1到n之间的所有素数,两个素数之间用空格隔开,最后一个素数输出后,输出一个空格和空行,输出参见函数Disp的代码。
  例如,当输入20时,输出如下:
  2 3 5 7 11 13 17 19*/

上面的程序在xp系统的vc++ 6.0下通过的!请给高分呀!本回答被提问者采纳

cpp答题为什么一直不通过
1、基础知识不牢固:C++是一门复杂的编程语言,对基础知识掌握不牢固,会导致答题不通过。加强对C++语法、语义和常用库函数的学习和理解。2、缺乏实践经验:C++编程要一定的实践经验来熟悉语言特性和解决实际问题。缺乏实践经验,在应用知识时遇到困难。多进行实际编程练习,通过解决实际问题来提升自己的能力。

为什么编写的C++程序无法编译?
这些步骤是解决源文件未编译问题的基础,但若问题仍未解决,可能还需深入检查。可能是代码格式问题,或者是编译器设置出现了异常。当然,每个案例都有其独特性,所以请务必提供详细的错误信息或者截图,这样我们能更精确地定位问题所在。最后,如果你依然在困惑,不要犹豫,继续提问,我们将共同探讨并找到答案。

C\/C++初学者常见编译错误及其解决办法
错误类型五:系统兼容性问题。在Windows XP系统下,错误信息可能与编译配置相关。确保选择正确的编译配置选项(如32位),避免兼容性问题导致的错误。错误类型六:无法打开输出文件。这可能是因为上次程序运行时未结束,导致新文件无法生成。关闭上次运行的程序窗口,重新编译。若问题依然存在,尝试另存文件或...

C++一道简单算法题,大佬们看下为什么我的代码不能满分通过?
C++算法题:按题目的意思n<=2*10^9 图中红色框内代码i*j是有可能超过这个范围的,造成整数最大溢出得不到正确结果。应该改为一个for循环,从最大的数开始往小的数搜索,不要用乘法,用除法。for(int i = n-1; n >= sqrt(n); i--){ if(n%i==0)maxNum= i;break;} 当然这些要保证...

c++编程——void main() 为何不能通过编译?50分
最新的C++编译器对void main不支持,只支持int main 另外你说的using namespace std;如果加了,就不用.h,用以下形式:include <iostream> using namespace std;

VS2013编程C++ 调试和生成老是出现问题,求救~~~
首先在Visual Studio里如果编译没过,那么这个提示就是正常的。因为此项目已经过期表示你改了某些文件或项目配置或者上次没有编译成功,需要重新编译,否则调试会出错。如果你上次编译通过了,按F5调试还是出现此提示,那可能就有问题了。如果每次都出现这样的问题,那么这个解决方案很适合你。当然解决方案不是...

为什么我安装的visualc++6.0这编程软件每次编译时总有一处错误_百度知...
选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的,“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\\VC98\\Bin”下面,你可以到相应的路径下找到这个应用程序。因此问题可以按照以下方法解决:打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)”—>“Directories(...

c++编程题目,我的程序为什么运行无结果
你没有调用Account函数。可以在主程序的输出之前显式的调用一下,以计算平均值。也可以在类的初始化里面调用。

c++简单编程题,要求用户任意输入三个数,并输出任意三个数中的最大值...
程序本身没什么错误就是 include <iostream.h> 这种写法太老了, 新的编译器可能不会接受的 换成如下形式:include<iostream> using namespace std;这样就没有问题了

C++为什么会提示错误?
这是一个编译错误,其含意是:在字符 ‘(’ 之前,应该是一个构造函数、析构函数或是类型转换等标识。编译程序现在在'('之前缺少必要的标识符,故提示错误。给你一个例子:int *p;p = new (10); \/\/ 这一句就会出现你问题中的错误。正确的写法应该是:p = new int(10);C++是一种面向对象的...

相似回答