为什么会不对呢,有些素数输不出来啊。
#include<iostream>#include<cstdlib>#include<ctime>using namespace std;void prime(int a[10]);int main(){ int a[10],i,j,t=0; srand(int(time(0))); cout<<"随机一维数组为:[ "; for(i=0;i<10;i++) { while(1) { a[i]=rand()%90+10; for(j=0;j<i;j++) { if(a[i]==a[j]) t+=1; } if(t==0) break; } cout<<a[i]<<" "; } cout<<"]\n"<<"其中的素数有:"; prime(a); system("pause");}void prime(int a[10]){ int i,j,t=0; for(i=0;i<10;i++) { for(j=1;j<=a[i]/2;j++) { if(a[i]%j==0) t+=1; } if(t==1) cout<<a[i]<<" "; } cout<<endl;}
有时还会出现这种情况,一维数组都还没有完全输出,程序就停止了。
j的起始值应该从2开始
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
void prime(int a[10]);
void main()
{
int a[10],i,j,t=0;
srand(int(time(0)));
cout<<"随机一维数组为:[ ";
for(i=0;i<10;i++)
{
while(1)
{
a[i]=rand()%90+10;
for(j=0;j<i;j++)
{
if(a[i]==a[j])
t+=1;
}
if(t==0)
break;
}
cout<<a[i]<<" ";
}
cout<<"]\n"<<"其中的素数有:";
prime(a);
}
void prime(int a[10])
{
int i,j,t;
for(i=0;i<10;i++)
{
t=0;
for(j=2;j<=a[i]/2;j++)
{
if(a[i]%j==0)
t=1;
}
if(t==0)
{
printf("%d ",a[i]);
}
}
cout<<endl;
}
追问
那出现这个问题是什么原因??
使用srand()函数需要包含stdlib.h头文件,你#include 看能否解决。
一维数组没完全输出就停止的情况出现频率还很高,我运行程序5次出现了3次
追答#include
#include
#include
using namespace std;
void prime(int a[10]);
int main()
{
int a[10],i,j,t=0;
srand(int(time(0)));
cout<<"随机一维数组为:[ ";
for(i=0;i<10;i++)
{
while(1)
{
t=0;/////////必需在此置0 否则一旦重复就死循环了
a[i]=rand()%90+10;
for(j=0;j<i;j++)
{
if(a[i]==a[j])
t+=1;
}
if(t==0)
break;
}
cout<<a[i]<<" ";
}
cout<<"]\n"<<"其中的素数有:";
prime(a);
system("pause");
}
void prime(int a[10])
{
int i,j,t=0;
for(i=0;i<10;i++)
{
t=0;/////////必需在此置0 否则最多只输出1个素数
for(j=1;j<=a[i]/2;j++)
{
if(a[i]%j==0)
t+=1;
}
if(t==1)
cout<<a[i]<<" ";
}
cout<<endl;
}
//两处错误都是类似的,变量的重新初始化要在合适的时候进行!!!