这个是我的程序段,红色的地方是出问题的地方
// 等出力Dlg.cpp : implementation file
//#include "stdafx.h"
#include "等出力.h"
#include "等出力Dlg.h"
#include <stdio.h>
#include <iostream>
#include <fstream.h>
#include <math.h>
const int N=10;
const int M=36;
const int T=12;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA // ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
//}}AFX_VIRTUAL// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
double HV(double h)
{double V[N]={0,0.241,1.592,4.521,9.692,18.490,33.346,57.349,95.058,151.578};
   double H[N]={50,60,70,80,90,100,110,120,130,140};
double b;
int i,p;
//计算死库容
  b=0;
  p=0;
  for(i=1;i<N-2;i++) 
  { 
    if(h<=H[i]) break; 
    p++; 
  } 
  if(h<=H[1])
  {if((p>0)&&p<(N-2)&&(h-H[p]<H[p+1]-h)) 
     p--; 
  b+=(V[0]*(h-H[1])-V[1]*(h-H[0]))/(H[0]-H[1]); 
  }
  else
  {
  if((p>0)&&p<(N-2)&&(h-H[p]<H[p+1]-h)) 
    p--; 
  b=(h-H[p+1])/(H[p]-H[p+1])*(h-H[p+2])/(H[p]-H[p+2])*V[p]; 
  b+=(h-H[p])/(H[p+1]-H[p])*(h-H[p+2])/(H[p+1]-H[p+2])*V[p+1]; 
  b+=(h-H[p])/(H[p+2]-H[p])*(h-H[p+1])/(H[p+2]-H[p+1])*V[p+2]; 
  }
  return b;
}
 double VH(double e)
{double V[N]={0,0.241,1.592,4.521,9.692,18.490,33.346,57.349,95.058,151.578};
   double H[N]={50,60,70,80,90,100,110,120,130,140};
double we;
int i,d;
we=0; 
 d=0;
  for(i=1;i<N-2;i++) 
  { 
    if(e<=V[i]) break; 
    d++; 
  } 
  //特殊点处理
if(e<=V[1])
  {if ((d>0)&&d<(N-2)&&(e-V[d]<V[d+1]-e)) 
     d--; 
  we+=(H[0]*(e-V[1])-H[1]*(e-V[0]))/(V[0]-V[1]); 
  
  }
  else
  //插值计算
  
  {
  if((d>0)&&d<(N-2)&&(e-V[d]<V[d+1]-e)) 
    d--; 
  we=(e-V[d+1])/(V[d]-V[d+1])*(e-V[d+2])/(V[d]-V[d+2])*H[d]; 
  we+=(e-V[d])/(V[d+1]-V[d])*(e-V[d+2])/(V[d+1]-V[d+2])*H[d+1]; 
  we+=(e-V[d])/(V[d+2]-V[d])*(e-V[d+1])/(V[d+2]-V[d+1])*H[d+2]; 
  }
  return we;
}double QH(double m)
{double R[36]={48.5,49,49.5,50,50.5,51,51.5,52,52.5,53,53.5,54,54.5,
55,55.5,56,56.5,57,57.5,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74};
double F[36]={204,350,545,795,1120,1490,1900,2350,2820,3320,3360,4420,5040,5720,6450,7200,7950,9700,9470,10300,12000,
13700,15600,17500,19300,21200,23200,25200,27200,29300,31600,33800,36000,38300,40300,43400};
double k;
int p,i;
k=0; 
 p=0;
  for(i=1;i<M-2;i++) 
  { 
    if(m<=F[i]) break; 
    p++; 
  } 
  //特殊点处理
  if(m<=F[1])
  {if((p>0)&&p<(M-2)&&(m-F[p]<F[p+1]-m)) 
     p--; 
  k+=(R[0]*(m-F[1])-R[1]*(m-F[0]))/(F[0]-F[1]); 
  }
  else//插值计算
  {
  if
  ((p>0)&&p<(M-2)&&(m-F[p]<F[p+1]-m)) 
    p--; 
  k=(m-F[p+1])/(F[p]-F[p+1])*(m-F[p+2])/(F[p]-F[p+2])*R[p]; 
  k+=(m-F[p])/(F[p+1]-F[p])*(m-F[p+2])/(F[p+1]-F[p+2])*R[p+1]; 
  k+=(m-F[p])/(F[p+2]-F[p])*(m-F[p+1])/(F[p+2]-F[p+1])*R[p+2]; 
  }
  return k;
 }
}
void CMyDlg::OnButton1() 
{
// TODO: Add your control notification handler code here
static double VT[T],Q[T],A[T]={4,5,6,7,8,9,10,11,12,1,2},B[T]={30,31,30,31,31,30,31,30,31,31,28};
static int i,j;
static double Nt,s,a,n,x,k,s1,ssw,skr,zcsw,zckr,q,g1,g2; //b:死库容,c:正常库容,d:下游水位
 
//输入数据
UpdateData(true);
ssw=m_SSW;
zcsw=m_ZCSW;
n=m_JSCL;
q=m_JSQ;
g1=m_GS1;
g2=m_GS2;
UpdateData(false);
//求死库容、正常库容;
    a=0.8;
skr=HV(ssw);
zckr=HV(zcsw); ifstream in1("E:\\水能计算\\资料\\数据.txt",ios::in);
for(i=0;i<T;i++)
in1>>Q[i]; {
for(i=0;i<12;i++)
if(g1==A[i])
s=i;}
{for(i=0;i<12;i++)
if(g2==A[i])
k=i;}
    s1=k-s;
VT[0]=skr;for (j=0; ;j++)
for (i=0;i<12;i++)
{
VT[i+1]=VT[i]+(Q[i]-q)*B[i]*24*3600;
if(VT[i]>zckr) VT[i]=zckr;
}
vpj=(VT[i]+VT[i+1])/2;
Nt=a*q*(VH(vpj)-QH(q));
if((Nt-n)>=(n/100)) 
q=q+(Nt-n)/(a*(VH(vpj)-QH(q)));
else 
break;
}    UpdateData(true);
m_SKR=skr;
m_q1=q;
m_N1=Nt;
m_ZCKR=zckr;
n=m_JSCL;
UpdateData(false);
}