注册 登录
编程论坛 数据结构与算法

全局变量输入数值后,变量怎么还会自己改变?

troyzyc 发布于 2018-03-09 10:10, 1625 次点击
#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;
}
1 回复
#2
星珩2018-03-11 16:52
1