很奇怪的问题。关于文件输出
#include <conio.h>
#include <stdio.h>
/* 判断是否为素数 */
int isPrime( int m )
{
int i;
for( i=2;i<m;i++ )
if( m%i==0 )
return 0;
return 1;
}
int prime( int m,int n,int a )
{
int i,j;
int prime;
for( j=m+1;;j++ )
if( prime=isPrime( j )== 1 )
{
return j;
}
}
void main()
{
int m,n,i;
int a[3000];
int result=0;
FILE *fp;
clrscr();
printf("Please input m: ");
scanf("%d",&m );
printf("\nPlease input n: ");
scanf("%d",&n );
for( i=0;i<10;i++ )
a[i]=0;
result=prime( m,n,a[0] );
a[0]=result;
for( i=1;i<n;i++ )
{
result=prime( a[i-1],n,a[i] );
a[i]=result;
}
for( i=0;i<n;i++ )
printf("\n\n%d ", a[i] );
if( (fp=fopen("out.txt","w"))==NULL )
{
printf("\nCan't open this file.");
getch();
exit(0);
}
for( i=0;i<n;i++ )
{
fprintf( fp, "%d ", a[i] );
}
}
m为第一个素数,n为要输出多少个大于m的素数.
但现在问题是,我要是输出小一些的数,就会正确。如我输入3和5,输出5,7,11,13,17,文件输出也正常。但如果我输入3和2999(我数组定义大小为3000),屏幕输出正常。但文件输出错误。这是什么原因呀。还有如果我把所有的int型定义成long型后,则会出错。这是为什么?如果数组定义过大(如定义成a[30000] ),就会出错。是什么原因?