全局变量输入数值后,变量怎么还会自己改变?
#include<stdio.h>#define N 1000001
int m,n; //问题:这里我设置了m、n为全局变量,在主函数中输入m=1,n=20后,在运行到最后 if(a[i]>m && a[i]<n) 这句时,我发现m=200001,n=20,这样就没有count的正确答案了。请问哪位大神知道全局变量还能自己改变?
int a[N];
void dfs(int s)
{
int i;
int cnt=s;
if(a[s]>n) return ;
for(i=s;i<=n;i++)
{
if(i%a[s]!=0) //有余数
{
a[cnt++]=a[i];
}
}
dfs(s+1); //找下一个幸运数字序号
return ;
}
int main()
{
int count=0;
scanf("%d %d",&m,&n);
int i,j;
for(i=1;i<=N;i++) //删掉能被2整除的序号的项 ,并重新记序
{
a[i]=2*i-1;
}
dfs(1); //1是重排序后幸运数字的序号,或者是第二步
for(i=1;i<n;i++)
{
if(a[i]>m && a[i]<n)
count++;
}
printf("%d\n",count);
return 0;
}