C++计算tan值出错

#include<bits/stdc++.h>
using namespace std;
#define PI 3.1415926
double const R=0.250,miu=PI*4,w=miu/R;
double k,xit,A[7],B[7];double tan(double x);
int N;
double dcc(int x,double y,double z)//电磁场 
{
	double o;
	k=w*x*y;
	z=z*PI/180.0f;
	o=tan(z);
	k=k/o;
	return k;
}//物理实验的公式 
int main()
{
	freopen("a.in","r",stdin);
	freopen("a.out","w",stdout);
	for(int i=1;i<=5;i++)
	{
		cin>>N>>xit;//N为匝数,xit为角度 
		A[i]=dcc(N,50,xit);
		cout<<A[i]<<" ";
	}
	cout<<endl;
	for(int i=1;i<=5;i++)
	{
		cin>>N>>xit;
		B[i]=dcc(30,N,xit);
		cout<<B[i]<<" ";
	} 
	cout<<endl;
	//以下为为了检验错误写的,当把这段代码单独运行时,程序无错误
	//当这段代码写上去的时候,就会发现错误,总能得到 -1.73205
	//例如输入45,计算tan(45),得到-1.73205 
	double rrr,rr,r;
	cin>>rrr;
	rr=rrr*PI/180.0f;
	r=tan(rr);
	cout<<r<<endl;
	return 0;
} 

计算tan得到的值错误

#include<bits/stdc++.h>
using namespace std;
#define PI 3.1415926
double const R=0.250,miu=PI*4,w=miu/R;
double k,xit,A[7],B[7];double tan(double x);
int N;
double dcc(int x,double y,double z)//电磁场 
{
	double o;
	k=w*x*y;
	z=z*PI/180.0f;
	o=tan(z);
	k=k/o;
	return k;
}//物理实验的公式 
int main()
{
    /*
	freopen("a.in","r",stdin);
	freopen("a.out","w",stdout);
	for(int i=1;i<=5;i++)
	{
		cin>>N>>xit;//N为匝数,xit为角度 
		A[i]=dcc(N,50,xit);
		cout<<A[i]<<" ";
	}
	cout<<endl;
	for(int i=1;i<=5;i++)
	{
		cin>>N>>xit;
		B[i]=dcc(30,N,xit);
		cout<<B[i]<<" ";
	} 
	cout<<endl;
	*/
	//以下为为了检验错误写的,当把这段代码单独运行时,程序无错误
	//当这段代码写上去的时候,就会发现错误,总能得到 -1.73205
	//例如输入45,计算tan(45),得到-1.73205 
	double rrr,rr,r;
	cin>>rrr;
	rr=rrr*PI/180.0f;
	r=tan(rr);
	cout<<r<<endl;
	return 0;
} 


// Output
45
1

可能是别的代码引起的。我注释掉别的代码,值计算tan(45°),结果输出1,是对的

你为什么要定义这么多的全局变量呢?非必要不要定义这么多的全局变量。

如果单独测试没问题的话,那就是cin读取到其他信息了。在33行之后加一句话

fflush(stdin); 清空下std的缓存区