![]() |
#2
yuccn2014-08-16 08:15
|

#include "stdafx.h"
/*筛法求100之内素数*/
#include "stdafx.h"
#include<iostream>
using namespace std;
void cut();
int a[];//换成a[100],就可以通过编译
int main()
{
int i;
for(i=0;i<100;i++)
a[i]=i+1;
cut();
int k;
for (i=0,k=0;i<100;i++)
{
if(a[i]!=0)
{ if(k%5==0)cout<<endl;
cout<<a[i]<<" ";
k=k+1;
}
}
return 0;
}
void cut()
{
int i,k;
a[0]=0;
for(i=2;i<100;i++)
{
if(a[i]!=0)
{
for(k=i+1;k<100;k++)
if(a[k]%a[i]==0)a[k]=0;
}
}
}
我在以上程序中定义了一个一维的int数组a,未指定长度。编译时系统提示:1>asd.obj : error LNK2001: 无法解析的外部符号 "int * a" (?a@@3PAHA)/*筛法求100之内素数*/
#include "stdafx.h"
#include<iostream>
using namespace std;
void cut();
int a[];//换成a[100],就可以通过编译
int main()
{
int i;
for(i=0;i<100;i++)
a[i]=i+1;
cut();
int k;
for (i=0,k=0;i<100;i++)
{
if(a[i]!=0)
{ if(k%5==0)cout<<endl;
cout<<a[i]<<" ";
k=k+1;
}
}
return 0;
}
void cut()
{
int i,k;
a[0]=0;
for(i=2;i<100;i++)
{
if(a[i]!=0)
{
for(k=i+1;k<100;k++)
if(a[k]%a[i]==0)a[k]=0;
}
}
}
指定a的长度为100后则编译通过
为什么?求解释!